author | Mikael Hallendal <micke@imendio.com> |
Thu, 10 Apr 2008 16:23:26 +0200 | |
changeset 382 | bc887affb431 |
parent 375 | 1f0f637e3ae8 |
child 383 | 926c939af071 |
permissions | -rw-r--r-- |
374
6fb30156b968
Added files for LmSSL and LmProxy to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
1 |
#include "rblm.h" |
6fb30156b968
Added files for LmSSL and LmProxy to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
2 |
|
375
1f0f637e3ae8
Added LmProxyType to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents:
374
diff
changeset
|
3 |
VALUE lm_cSSL; |
1f0f637e3ae8
Added LmProxyType to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents:
374
diff
changeset
|
4 |
|
382
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
5 |
static LmSSL * |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
6 |
rb_lm_ssl_from_ruby_object (VALUE obj) |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
7 |
{ |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
8 |
LmSSL *ssl; |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
9 |
|
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
10 |
if (!rb_lm__is_kind_of (obj, lm_cSSL)) { |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
11 |
rb_raise (rb_eTypeError, "not a LmSSL"); |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
12 |
} |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
13 |
|
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
14 |
Data_Get_Struct (obj, LmSSL, ssl); |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
15 |
|
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
16 |
return ssl; |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
17 |
} |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
18 |
|
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
19 |
void |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
20 |
ssl_free (LmSSL *ssl) |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
21 |
{ |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
22 |
lm_ssl_unref (ssl); |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
23 |
} |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
24 |
|
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
25 |
VALUE |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
26 |
ssl_allocate (VALUE klass) |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
27 |
{ |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
28 |
return Data_Wrap_Struct (klass, NULL, ssl_free, NULL); |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
29 |
} |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
30 |
|
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
31 |
static LmSSLResponse |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
32 |
ssl_func_callback (LmSSL *ssl, |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
33 |
LmSSLStatus status, |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
34 |
gpointer user_data) |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
35 |
{ |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
36 |
VALUE response; |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
37 |
|
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
38 |
if (!user_data) { |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
39 |
return LM_SSL_RESPONSE_CONTINUE; |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
40 |
} |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
41 |
|
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
42 |
response = rb_funcall ((VALUE)user_data, rb_intern ("call"), 1, |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
43 |
INT2FIX (status)); |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
44 |
|
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
45 |
return rb_lm_ssl_response_from_ruby_object (response); |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
46 |
} |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
47 |
|
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
48 |
VALUE |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
49 |
ssl_initialize (int argc, VALUE *argv, VALUE self) |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
50 |
{ |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
51 |
LmSSL *ssl; |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
52 |
VALUE fingerprint; |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
53 |
VALUE func; |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
54 |
char *fingerprint_str = NULL; |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
55 |
gpointer func_ptr = NULL; |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
56 |
|
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
57 |
rb_scan_args (argc, argv, "01&", &fingerprint, &func); |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
58 |
|
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
59 |
if (!NIL_P (func)) { |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
60 |
func_ptr = (gpointer) func; |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
61 |
} |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
62 |
|
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
63 |
if (!NIL_P (fingerprint)) { |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
64 |
VALUE str_val; |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
65 |
|
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
66 |
if (!rb_respond_to (fingerprint, rb_intern ("to_s"))) { |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
67 |
rb_raise (rb_eArgError, |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
68 |
"fingerprint should respond to to_s"); |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
69 |
} |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
70 |
|
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
71 |
str_val = rb_funcall (fingerprint, rb_intern ("to_s"), 0); |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
72 |
fingerprint_str = StringValuePtr (str_val); |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
73 |
} |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
74 |
|
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
75 |
ssl = lm_ssl_new (fingerprint_str, ssl_func_callback, |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
76 |
func_ptr, NULL); |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
77 |
|
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
78 |
DATA_PTR (self) = ssl; |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
79 |
|
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
80 |
return self; |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
81 |
} |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
82 |
|
374
6fb30156b968
Added files for LmSSL and LmProxy to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
83 |
extern void |
6fb30156b968
Added files for LmSSL and LmProxy to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
84 |
Init_lm_ssl (VALUE lm_mLM) |
375
1f0f637e3ae8
Added LmProxyType to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents:
374
diff
changeset
|
85 |
{ |
1f0f637e3ae8
Added LmProxyType to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents:
374
diff
changeset
|
86 |
lm_cSSL = rb_define_class_under (lm_mLM, "SSL", rb_cObject); |
382
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
87 |
|
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
88 |
rb_define_alloc_func (lm_cSSL, ssl_allocate); |
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
89 |
|
bc887affb431
Implemented ssl_initialize for LmSSL ruby bindings.
Mikael Hallendal <micke@imendio.com>
parents:
375
diff
changeset
|
90 |
rb_define_method (lm_cSSL, "initialize", ssl_initialize, -1); |
375
1f0f637e3ae8
Added LmProxyType to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents:
374
diff
changeset
|
91 |
} |
374
6fb30156b968
Added files for LmSSL and LmProxy to ruby bindings
Mikael Hallendal <micke@imendio.com>
parents:
diff
changeset
|
92 |