bindings/ruby/src/rblm-proxy.c
author Mikael Hallendal <micke@imendio.com>
Thu, 10 Apr 2008 21:30:17 +0200
changeset 390 8623ce9ef39d
permissions -rw-r--r--
moved extension code to src
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
390
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
     1
#include "rblm.h"
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
     2
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
     3
VALUE lm_cProxy;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
     4
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
     5
LmProxy *
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
     6
rb_lm_proxy_from_ruby_object (VALUE obj)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
     7
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
     8
	LmProxy *proxy;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
     9
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    10
	if (!rb_lm__is_kind_of (obj, lm_cProxy)) {
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    11
		rb_raise (rb_eTypeError, "not a LmProxy");
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    12
	}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    13
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    14
	Data_Get_Struct (obj, LmProxy, proxy);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    15
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    16
	return proxy;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    17
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    18
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    19
void
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    20
proxy_free (LmProxy *proxy)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    21
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    22
	lm_proxy_unref (proxy);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    23
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    24
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    25
VALUE
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    26
rb_lm_proxy_to_ruby_object (LmProxy *proxy)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    27
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    28
	if (proxy) {
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    29
		lm_proxy_ref (proxy);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    30
		return Data_Wrap_Struct (lm_cProxy, NULL, 
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    31
					 proxy_free, proxy);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    32
	} else {
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    33
		return Qnil;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    34
	}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    35
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    36
VALUE
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    37
proxy_allocate (VALUE klass)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    38
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    39
	return Data_Wrap_Struct (klass, NULL, proxy_free, NULL);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    40
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    41
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    42
VALUE
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    43
proxy_initialize (int argc, VALUE *argv, VALUE self)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    44
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    45
	LmProxy *proxy;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    46
	VALUE    type, server, port;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    47
	char    *server_str = NULL;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    48
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    49
	rb_scan_args (argc, argv, "12", &type, &server, &port);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    50
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    51
	proxy = lm_proxy_new (FIX2INT (type));
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    52
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    53
	if (!NIL_P (server)) {
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    54
		if (!rb_respond_to (server, rb_intern ("to_s"))) {
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    55
			rb_raise (rb_eArgError, "server should respond to to_s");
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    56
		} else {
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    57
			VALUE str_val = rb_funcall (server, rb_intern ("to_s"), 0);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    58
			lm_proxy_set_server (proxy, StringValuePtr (str_val));
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    59
		}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    60
	}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    61
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    62
	if (!NIL_P (port)) {
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    63
		lm_proxy_set_port (proxy, NUM2UINT (port));
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    64
	}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    65
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    66
	DATA_PTR (self) = proxy;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    67
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    68
	return self;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    69
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    70
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    71
VALUE
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    72
proxy_get_type (VALUE self)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    73
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    74
	LmProxy *proxy = rb_lm_proxy_from_ruby_object (self);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    75
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    76
	return INT2FIX (lm_proxy_get_type (proxy));
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    77
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    78
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    79
VALUE
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    80
proxy_set_type (VALUE self, VALUE type)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    81
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    82
	LmProxy *proxy = rb_lm_proxy_from_ruby_object (self);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    83
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    84
	lm_proxy_set_type (proxy, FIX2INT (type));
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    85
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    86
	return Qnil;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    87
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    88
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    89
VALUE
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    90
proxy_get_server (VALUE self)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    91
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    92
	LmProxy *proxy = rb_lm_proxy_from_ruby_object (self);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    93
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    94
	if (lm_proxy_get_server (proxy)) {
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    95
		return rb_str_new2 (lm_proxy_get_server (proxy));
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    96
	}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    97
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    98
	return Qnil;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
    99
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   100
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   101
VALUE
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   102
proxy_set_server (VALUE self, VALUE server)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   103
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   104
	LmProxy *proxy = rb_lm_proxy_from_ruby_object (self);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   105
	VALUE    str_val;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   106
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   107
	if (!rb_respond_to (server, rb_intern ("to_s"))) {
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   108
		rb_raise (rb_eArgError, "server should respond to to_s");
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   109
	} 
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   110
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   111
	str_val = rb_funcall (server, rb_intern ("to_s"), 0);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   112
	lm_proxy_set_server (proxy, StringValuePtr (str_val));
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   113
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   114
	return Qnil;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   115
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   116
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   117
VALUE 
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   118
proxy_get_port (VALUE self)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   119
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   120
	LmProxy *proxy = rb_lm_proxy_from_ruby_object (self);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   121
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   122
	return UINT2NUM (lm_proxy_get_port (proxy));
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   123
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   124
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   125
VALUE
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   126
proxy_set_port (VALUE self, VALUE port)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   127
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   128
	LmProxy *proxy = rb_lm_proxy_from_ruby_object (self);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   129
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   130
	lm_proxy_set_port (proxy, NUM2UINT (port));
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   131
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   132
	return Qnil;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   133
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   134
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   135
VALUE
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   136
proxy_get_username (VALUE self)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   137
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   138
	LmProxy *proxy = rb_lm_proxy_from_ruby_object (self);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   139
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   140
	if (lm_proxy_get_username (proxy)) {
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   141
		return rb_str_new2 (lm_proxy_get_username (proxy));
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   142
	}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   143
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   144
	return Qnil;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   145
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   146
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   147
VALUE
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   148
proxy_set_username (VALUE self, VALUE username)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   149
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   150
	LmProxy *proxy = rb_lm_proxy_from_ruby_object (self);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   151
	VALUE    str_val;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   152
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   153
	if (!rb_respond_to (username, rb_intern ("to_s"))) {
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   154
		rb_raise (rb_eArgError, "username should respond to to_s");
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   155
	} 
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   156
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   157
	str_val = rb_funcall (username, rb_intern ("to_s"), 0);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   158
	lm_proxy_set_username (proxy, StringValuePtr (str_val));
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   159
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   160
	return Qnil;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   161
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   162
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   163
VALUE
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   164
proxy_get_password (VALUE self)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   165
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   166
	LmProxy *proxy = rb_lm_proxy_from_ruby_object (self);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   167
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   168
	if (lm_proxy_get_password (proxy)) {
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   169
		return rb_str_new2 (lm_proxy_get_password (proxy));
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   170
	}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   171
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   172
	return Qnil;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   173
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   174
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   175
VALUE
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   176
proxy_set_password (VALUE self, VALUE password)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   177
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   178
	LmProxy *proxy = rb_lm_proxy_from_ruby_object (self);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   179
	VALUE    str_val;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   180
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   181
	if (!rb_respond_to (password, rb_intern ("to_s"))) {
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   182
		rb_raise (rb_eArgError, "password should respond to to_s");
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   183
	} 
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   184
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   185
	str_val = rb_funcall (password, rb_intern ("to_s"), 0);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   186
	lm_proxy_set_password (proxy, StringValuePtr (str_val));
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   187
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   188
	return Qnil;
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   189
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   190
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   191
extern void
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   192
Init_lm_proxy (VALUE lm_mLM)
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   193
{
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   194
	lm_cProxy = rb_define_class_under (lm_mLM, "Proxy", rb_cObject);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   195
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   196
	rb_define_alloc_func (lm_cProxy, proxy_allocate);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   197
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   198
	rb_define_method (lm_cProxy, "initialize", proxy_initialize, -1);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   199
	rb_define_method (lm_cProxy, "type", proxy_get_type, 0);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   200
	rb_define_method (lm_cProxy, "type=", proxy_set_type, 1);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   201
	rb_define_method (lm_cProxy, "server", proxy_get_server, 0);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   202
	rb_define_method (lm_cProxy, "server=", proxy_set_server, 1);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   203
	rb_define_method (lm_cProxy, "port", proxy_get_port, 0);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   204
	rb_define_method (lm_cProxy, "port=", proxy_set_port, 1);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   205
	rb_define_method (lm_cProxy, "username", proxy_get_username, 0);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   206
	rb_define_method (lm_cProxy, "username=", proxy_set_username, 1);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   207
	rb_define_method (lm_cProxy, "password", proxy_get_password, 0);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   208
	rb_define_method (lm_cProxy, "password=", proxy_set_password, 1);
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   209
}
8623ce9ef39d moved extension code to src
Mikael Hallendal <micke@imendio.com>
parents:
diff changeset
   210