bindings/ruby/rblm-connection.c
author Mikael Hallendal <micke@imendio.com>
Thu, 10 Apr 2008 14:13:14 +0200
changeset 375 1f0f637e3ae8
parent 369 a416922c533d
child 376 d54d6310c136
permissions -rw-r--r--
Added LmProxyType to ruby bindings
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
364
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
     1
#include "rblm.h"
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
     2
#include "rblm-private.h"
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
     3
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
     4
VALUE lm_cConnection;
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
     5
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
     6
VALUE conn_set_server (VALUE self, VALUE server);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
     7
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
     8
static LmConnection *
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
     9
rb_lm_connection_from_ruby_object (VALUE obj)
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    10
{
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    11
	LmConnection *conn;
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    12
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    13
	if (!rb_lm__is_kind_of (obj, lm_cConnection)) {
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    14
		rb_raise (rb_eTypeError, "not a LmConnection");
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    15
	}
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    16
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    17
	Data_Get_Struct (obj, LmConnection, conn);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    18
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    19
	return conn;
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    20
}
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    21
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    22
void
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    23
conn_free (LmConnection *self)
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    24
{
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    25
	lm_connection_unref (self);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    26
}
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    27
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    28
VALUE
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    29
conn_allocate(VALUE klass)
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    30
{
365
64b1c1c32d56 Change allocate/initialize for LmConnection to not create the LM object in allocate
Mikael Hallendal <micke@imendio.com>
parents: 364
diff changeset
    31
	return Data_Wrap_Struct (klass, NULL, conn_free, NULL);
364
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    32
}
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    33
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    34
VALUE
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    35
conn_initialize (VALUE self, VALUE server, VALUE context)
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    36
{
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    37
	LmConnection *conn;
365
64b1c1c32d56 Change allocate/initialize for LmConnection to not create the LM object in allocate
Mikael Hallendal <micke@imendio.com>
parents: 364
diff changeset
    38
	char         *srv_str = NULL;
364
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    39
365
64b1c1c32d56 Change allocate/initialize for LmConnection to not create the LM object in allocate
Mikael Hallendal <micke@imendio.com>
parents: 364
diff changeset
    40
	if (NIL_P (context)) {
64b1c1c32d56 Change allocate/initialize for LmConnection to not create the LM object in allocate
Mikael Hallendal <micke@imendio.com>
parents: 364
diff changeset
    41
		GMainContext *ctx = NULL;
64b1c1c32d56 Change allocate/initialize for LmConnection to not create the LM object in allocate
Mikael Hallendal <micke@imendio.com>
parents: 364
diff changeset
    42
		/* FIXME: read out the context from context */
64b1c1c32d56 Change allocate/initialize for LmConnection to not create the LM object in allocate
Mikael Hallendal <micke@imendio.com>
parents: 364
diff changeset
    43
		conn = lm_connection_new_with_context (NULL, ctx);
64b1c1c32d56 Change allocate/initialize for LmConnection to not create the LM object in allocate
Mikael Hallendal <micke@imendio.com>
parents: 364
diff changeset
    44
	} else {
64b1c1c32d56 Change allocate/initialize for LmConnection to not create the LM object in allocate
Mikael Hallendal <micke@imendio.com>
parents: 364
diff changeset
    45
		conn = lm_connection_new (NULL);
64b1c1c32d56 Change allocate/initialize for LmConnection to not create the LM object in allocate
Mikael Hallendal <micke@imendio.com>
parents: 364
diff changeset
    46
	}
364
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    47
365
64b1c1c32d56 Change allocate/initialize for LmConnection to not create the LM object in allocate
Mikael Hallendal <micke@imendio.com>
parents: 364
diff changeset
    48
	DATA_PTR (self) = conn;
64b1c1c32d56 Change allocate/initialize for LmConnection to not create the LM object in allocate
Mikael Hallendal <micke@imendio.com>
parents: 364
diff changeset
    49
64b1c1c32d56 Change allocate/initialize for LmConnection to not create the LM object in allocate
Mikael Hallendal <micke@imendio.com>
parents: 364
diff changeset
    50
	if (!NIL_P (server)) {
64b1c1c32d56 Change allocate/initialize for LmConnection to not create the LM object in allocate
Mikael Hallendal <micke@imendio.com>
parents: 364
diff changeset
    51
		conn_set_server (self, server);
64b1c1c32d56 Change allocate/initialize for LmConnection to not create the LM object in allocate
Mikael Hallendal <micke@imendio.com>
parents: 364
diff changeset
    52
	}
364
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    53
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    54
	return self;
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    55
}
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    56
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    57
static void
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    58
open_callback (LmConnection *conn, gboolean success, gpointer user_data)
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    59
{
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    60
	rb_funcall((VALUE)user_data, rb_intern ("call"), 1,
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    61
		   GBOOL2RVAL (success));
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    62
}
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    63
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    64
VALUE
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    65
conn_open (int argc, VALUE *argv, VALUE self)
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    66
{
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    67
	LmConnection *conn = rb_lm_connection_from_ruby_object (self);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    68
	VALUE         func;
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    69
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    70
	rb_scan_args (argc, argv, "0&", &func);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    71
	if (NIL_P (func)) {
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    72
		func = rb_block_proc ();
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    73
	}
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    74
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    75
	return GBOOL2RVAL (lm_connection_open (conn, open_callback, 
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    76
					       (gpointer) func, NULL, NULL));
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    77
}
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    78
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    79
VALUE
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    80
conn_close (VALUE self)
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    81
{
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    82
	LmConnection *conn = rb_lm_connection_from_ruby_object (self);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    83
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    84
	return GBOOL2RVAL (lm_connection_close (conn, NULL));
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    85
}
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    86
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    87
static void
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    88
auth_callback (LmConnection *conn, gboolean success, gpointer user_data)
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    89
{
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    90
	rb_funcall((VALUE)user_data, rb_intern ("call"), 1,
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    91
		   GBOOL2RVAL (success));
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    92
}
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    93
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    94
VALUE
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    95
conn_auth (int argc, VALUE *argv, VALUE self)
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    96
{
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    97
	LmConnection *conn = rb_lm_connection_from_ruby_object (self);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    98
	VALUE         name, password, resource, func; 
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    99
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   100
	rb_scan_args (argc, argv, "21&", &name, &password, &resource, &func);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   101
	if (NIL_P (func)) {
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   102
		func = rb_block_proc ();
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   103
	}
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   104
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   105
	return GBOOL2RVAL (lm_connection_authenticate (conn, 
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   106
						       StringValuePtr (name),
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   107
						       StringValuePtr (password), 
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   108
						       StringValuePtr (resource),
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   109
						       auth_callback,
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   110
						       (gpointer) func, NULL,
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   111
						       NULL));
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   112
}
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   113
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   114
VALUE
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   115
conn_set_keep_alive_rate (VALUE self, VALUE rate)
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   116
{
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   117
	LmConnection *conn = rb_lm_connection_from_ruby_object (self);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   118
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   119
	lm_connection_set_keep_alive_rate (conn, NUM2UINT (rate));
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   120
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   121
	return Qnil;
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   122
}
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   123
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   124
/*
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   125
 * VALUE
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   126
conn_get_keep_alive_rate (VALUE self)
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   127
{
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   128
	LmConnection *connection;
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   129
} */
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   130
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   131
VALUE
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   132
conn_is_open (VALUE self)
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   133
{
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   134
	LmConnection *conn = rb_lm_connection_from_ruby_object (self);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   135
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   136
	return GBOOL2RVAL (lm_connection_is_open (conn));
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   137
}
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   138
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   139
VALUE
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   140
conn_is_authenticated (VALUE self)
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   141
{
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   142
	LmConnection *conn = rb_lm_connection_from_ruby_object (self);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   143
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   144
	return GBOOL2RVAL (lm_connection_is_authenticated (conn));
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   145
}
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   146
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   147
VALUE
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   148
conn_get_server (VALUE self)
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   149
{
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   150
	LmConnection *conn = rb_lm_connection_from_ruby_object (self);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   151
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   152
	return rb_str_new2 (lm_connection_get_server (conn));
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   153
}
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   154
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   155
VALUE
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   156
conn_set_server (VALUE self, VALUE server)
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   157
{
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   158
	LmConnection *conn = rb_lm_connection_from_ruby_object (self);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   159
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   160
	if (!rb_respond_to (server, rb_intern ("to_s"))) {
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   161
		rb_raise (rb_eArgError, "server should respond to to_s");
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   162
	} else {
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   163
		VALUE str_val = rb_funcall (server, rb_intern ("to_s"), 0);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   164
		lm_connection_set_server (conn, StringValuePtr (str_val));
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   165
	}
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   166
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   167
	return Qnil;
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   168
}
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   169
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   170
VALUE
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   171
conn_get_jid (VALUE self)
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   172
{
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   173
	LmConnection *conn = rb_lm_connection_from_ruby_object (self);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   174
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   175
	return rb_str_new2 (lm_connection_get_jid (conn));
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   176
}
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   177
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   178
VALUE
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   179
conn_set_jid (VALUE self, VALUE jid)
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   180
{
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   181
	LmConnection *conn = rb_lm_connection_from_ruby_object (self);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   182
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   183
	if (!rb_respond_to (jid, rb_intern ("to_s"))) {
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   184
		rb_raise (rb_eArgError, "jid should respond to to_s");
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   185
	} else {
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   186
		VALUE str_val = rb_funcall (jid, rb_intern ("to_s"), 0);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   187
		lm_connection_set_jid (conn, StringValuePtr (str_val));
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   188
	}
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   189
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   190
	return Qnil;
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   191
}
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   192
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   193
VALUE
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   194
conn_get_port (VALUE self)
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   195
{
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   196
	LmConnection *conn = rb_lm_connection_from_ruby_object (self);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   197
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   198
	return UINT2NUM (lm_connection_get_port (conn));
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   199
}
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   200
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   201
VALUE
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   202
conn_set_port (VALUE self, VALUE port)
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   203
{
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   204
	LmConnection *conn = rb_lm_connection_from_ruby_object (self);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   205
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   206
	lm_connection_set_port (conn, NUM2UINT (port));
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   207
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   208
	return Qnil;
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   209
}
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   210
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   211
VALUE
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   212
conn_get_state (VALUE self)
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   213
{
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   214
	LmConnection *conn = rb_lm_connection_from_ruby_object (self);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   215
369
a416922c533d Implemented conn_get_state
Mikael Hallendal <micke@imendio.com>
parents: 365
diff changeset
   216
	return INT2FIX (lm_connection_get_state (conn));
364
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   217
}
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   218
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   219
void
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   220
Init_lm_connection (VALUE lm_mLM)
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   221
{
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   222
	lm_cConnection = rb_define_class_under (lm_mLM, "Connection", 
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   223
						rb_cObject);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   224
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   225
	rb_define_alloc_func (lm_cConnection, conn_allocate);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   226
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   227
	rb_define_method (lm_cConnection, "initialize", conn_initialize, 1);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   228
	rb_define_method (lm_cConnection, "open", conn_open, -1);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   229
	rb_define_method (lm_cConnection, "close", conn_close, 0);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   230
	rb_define_method (lm_cConnection, "authenticate", conn_auth, -1);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   231
	rb_define_method (lm_cConnection, "keep_alive_rate=", conn_set_keep_alive_rate, 1);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   232
	/* rb_define_method (lm_cConnection, "keep_alive_rate", conn_get_keep_alive_rate, 0); */
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   233
	rb_define_method (lm_cConnection, "open?", conn_is_open, 0);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   234
	rb_define_method (lm_cConnection, "authenticated?", conn_is_authenticated, 0);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   235
	rb_define_method (lm_cConnection, "server", conn_get_server, 0);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   236
	rb_define_method (lm_cConnection, "server=", conn_set_server, 1);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   237
	rb_define_method (lm_cConnection, "jid", conn_get_jid, 0);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   238
	rb_define_method (lm_cConnection, "jid=", conn_set_jid, 1);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   239
	rb_define_method (lm_cConnection, "port", conn_get_port, 0);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   240
	rb_define_method (lm_cConnection, "port=", conn_set_port, 1);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   241
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   242
	/*
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   243
	rb_define_method (lm_cConnection, "ssl", conn_get_ssl, 0);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   244
	rb_define_method (lm_cConnection, "ssl=", conn_set_ssl, 1);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   245
	rb_define_method (lm_cConnection, "proxy", conn_get_proxy, 0);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   246
	rb_define_method (lm_cConnection, "proxy=", conn_set_proxy, 1);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   247
	*/
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   248
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   249
	/* Use one send message and check if there is a block passed? */
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   250
	/*
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   251
	rb_define_method (lm_cConnection, "send", conn_send, 1);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   252
	rb_define_method (lm_cConnection, "send_with_reply", conn_send_with_reply, -1);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   253
	rb_define_method (lm_cConnection, "send_raw", conn_send_raw, 1);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   254
	*/
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   255
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   256
	rb_define_method (lm_cConnection, "state", conn_get_state, 0);
71e6639a924d Renamed to the rblm namespace
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   257
}