--- a/bindings/ruby/rblm-connection.c Thu Apr 10 17:03:00 2008 +0200
+++ b/bindings/ruby/rblm-connection.c Thu Apr 10 17:33:43 2008 +0200
@@ -5,7 +5,7 @@
VALUE conn_set_server (VALUE self, VALUE server);
-static LmConnection *
+LmConnection *
rb_lm_connection_from_ruby_object (VALUE obj)
{
LmConnection *conn;
@@ -209,6 +209,15 @@
}
VALUE
+conn_send (VALUE self, VALUE msg)
+{
+ LmConnection *conn = rb_lm_connection_from_ruby_object (self);
+ LmMessage *m = rb_lm_message_from_ruby_object (msg);
+
+ return GBOOL2RVAL (lm_connection_send (conn, m, NULL));
+}
+
+VALUE
conn_get_state (VALUE self)
{
LmConnection *conn = rb_lm_connection_from_ruby_object (self);
@@ -247,8 +256,9 @@
*/
/* Use one send message and check if there is a block passed? */
+
+ rb_define_method (lm_cConnection, "send", conn_send, 1);
/*
- rb_define_method (lm_cConnection, "send", conn_send, 1);
rb_define_method (lm_cConnection, "send_with_reply", conn_send_with_reply, -1);
rb_define_method (lm_cConnection, "send_raw", conn_send_raw, 1);
*/
--- a/bindings/ruby/rblm-message-node.c Thu Apr 10 17:03:00 2008 +0200
+++ b/bindings/ruby/rblm-message-node.c Thu Apr 10 17:33:43 2008 +0200
@@ -3,7 +3,7 @@
VALUE lm_cMessageNode;
-static LmMessageNode *
+LmMessageNode *
rb_lm_message_node_from_ruby_object (VALUE obj)
{
LmMessageNode *node;
@@ -88,7 +88,12 @@
rb_scan_args (argc, argv, "11", &name, &value);
if (!NIL_P (value)) {
- value_str = StringValuePtr (value);
+ if (!rb_respond_to (value, rb_intern ("to_s"))) {
+ rb_raise (rb_eArgError, "value should respond to to_s");
+ } else {
+ VALUE str_val = rb_funcall (value, rb_intern ("to_s"), 0);
+ value_str = StringValuePtr (str_val);
+ }
}
child = lm_message_node_add_child (node, StringValuePtr (name),
--- a/bindings/ruby/rblm-message.c Thu Apr 10 17:03:00 2008 +0200
+++ b/bindings/ruby/rblm-message.c Thu Apr 10 17:33:43 2008 +0200
@@ -5,7 +5,7 @@
VALUE lm_cMessage;
-static LmMessage *
+LmMessage *
rb_lm_message_from_ruby_object (VALUE obj)
{
LmMessage *m;
@@ -99,5 +99,7 @@
rb_define_method (lm_cMessage, "type", msg_get_type, 0);
rb_define_method (lm_cMessage, "sub_type", msg_get_sub_type, 0);
rb_define_method (lm_cMessage, "root_node", msg_get_root_node, 0);
+
+ rb_define_alias (lm_cMessage, "node", "root_node");
}
--- a/bindings/ruby/rblm-private.h Thu Apr 10 17:03:00 2008 +0200
+++ b/bindings/ruby/rblm-private.h Thu Apr 10 17:33:43 2008 +0200
@@ -15,6 +15,12 @@
VALUE rb_lm_message_node_to_ruby_object (LmMessageNode *node);
+LmConnection * rb_lm_connection_from_ruby_object (VALUE obj);
+LmMessage * rb_lm_message_from_ruby_object (VALUE obj);
+LmMessageNode * rb_lm_message_node_from_ruby_object (VALUE obj);
+LmSSL * rb_lm_ssl_from_ruby_object (VALUE obj);
+LmProxy * rb_lm_proxy_from_ruby_object (VALUE obj);
+
LmConnectionState rb_lm_connection_state_from_ruby_object (VALUE obj);
LmDisconnectReason rb_lm_disconnect_reason_from_ruby_object (VALUE obj);
LmMessageType rb_lm_message_type_from_ruby_object (VALUE obj);
--- a/bindings/ruby/rblm-proxy.c Thu Apr 10 17:03:00 2008 +0200
+++ b/bindings/ruby/rblm-proxy.c Thu Apr 10 17:33:43 2008 +0200
@@ -2,7 +2,7 @@
VALUE lm_cProxy;
-static LmProxy *
+LmProxy *
rb_lm_proxy_from_ruby_object (VALUE obj)
{
LmProxy *proxy;
--- a/bindings/ruby/rblm-ssl.c Thu Apr 10 17:03:00 2008 +0200
+++ b/bindings/ruby/rblm-ssl.c Thu Apr 10 17:33:43 2008 +0200
@@ -3,7 +3,7 @@
VALUE lm_cSSL;
-static LmSSL *
+LmSSL *
rb_lm_ssl_from_ruby_object (VALUE obj)
{
LmSSL *ssl;