# HG changeset patch # User Mikael Hallendal # Date 1207855817 -7200 # Node ID 8623ce9ef39d52ddc62ba4e075170854186f16cb # Parent 95287bd6f2332c927dceabad423d7ee9e034ccbe moved extension code to src diff -r 95287bd6f233 -r 8623ce9ef39d bindings/ruby/extconf.rb --- a/bindings/ruby/extconf.rb Thu Apr 10 21:14:27 2008 +0200 +++ b/bindings/ruby/extconf.rb Thu Apr 10 21:30:17 2008 +0200 @@ -7,7 +7,9 @@ require 'mkmf' +srcdir = File.join(File.expand_path(File.dirname(__FILE__)), 'src') + PKGConfig.have_package("loudmouth-1.0", 1, 3, 4) or exit 1 PKGConfig.have_package("glib-2.0", 2, 4, 0) or exit 1 -create_makefile("loudmouth") +create_makefile("loudmouth", srcdir) diff -r 95287bd6f233 -r 8623ce9ef39d bindings/ruby/rblm-connection.c --- a/bindings/ruby/rblm-connection.c Thu Apr 10 21:14:27 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,364 +0,0 @@ -#include "rblm.h" -#include "rblm-private.h" - -VALUE lm_cConnection; - -VALUE conn_set_server (VALUE self, VALUE server); - -/* -- START of GMainContext hack -- - * This is a hack to get the GMainContext from a ruby VALUE, this will break if - * internals change in Ruby/GLib. - */ -typedef struct { - gpointer boxed; - gboolean own; - gsize type; -} boxed_holder; - -static GMainContext * -rb_lm_hack_get_main_context_from_rval (VALUE ctx_rval) -{ - boxed_holder *holder; - - Data_Get_Struct (ctx_rval, boxed_holder, holder); - - return holder->boxed; -} -/* -- END of GMainContext hack -- */ - -LmConnection * -rb_lm_connection_from_ruby_object (VALUE obj) -{ - LmConnection *conn; - - if (!rb_lm__is_kind_of (obj, lm_cConnection)) { - rb_raise (rb_eTypeError, "not a LmConnection"); - } - - Data_Get_Struct (obj, LmConnection, conn); - - return conn; -} - -void -conn_free (LmConnection *self) -{ - lm_connection_unref (self); -} - -VALUE -conn_allocate (VALUE klass) -{ - return Data_Wrap_Struct (klass, NULL, conn_free, NULL); -} - -VALUE -conn_initialize (int argc, VALUE *argv, VALUE self) -{ - LmConnection *conn; - char *srv_str = NULL; - VALUE server, context; - - rb_scan_args (argc, argv, "02", &server, &context); - - if (!NIL_P (context)) { - GMainContext *ctx; - - ctx = rb_lm_hack_get_main_context_from_rval (context); - - conn = lm_connection_new_with_context (NULL, ctx); - } else { - conn = lm_connection_new (NULL); - } - - DATA_PTR (self) = conn; - - if (!NIL_P (server)) { - conn_set_server (self, server); - } - - return self; -} - -static void -open_callback (LmConnection *conn, gboolean success, gpointer user_data) -{ - rb_funcall((VALUE)user_data, rb_intern ("call"), 1, - GBOOL2RVAL (success)); -} - -VALUE -conn_open (int argc, VALUE *argv, VALUE self) -{ - LmConnection *conn = rb_lm_connection_from_ruby_object (self); - VALUE func; - - rb_scan_args (argc, argv, "0&", &func); - if (NIL_P (func)) { - func = rb_block_proc (); - } - - return GBOOL2RVAL (lm_connection_open (conn, open_callback, - (gpointer) func, NULL, NULL)); -} - -VALUE -conn_close (VALUE self) -{ - LmConnection *conn = rb_lm_connection_from_ruby_object (self); - - return GBOOL2RVAL (lm_connection_close (conn, NULL)); -} - -static void -auth_callback (LmConnection *conn, gboolean success, gpointer user_data) -{ - rb_funcall((VALUE)user_data, rb_intern ("call"), 1, - GBOOL2RVAL (success)); -} - -VALUE -conn_auth (int argc, VALUE *argv, VALUE self) -{ - LmConnection *conn = rb_lm_connection_from_ruby_object (self); - VALUE name, password, resource, func; - - rb_scan_args (argc, argv, "21&", &name, &password, &resource, &func); - if (NIL_P (func)) { - func = rb_block_proc (); - } - - return GBOOL2RVAL (lm_connection_authenticate (conn, - StringValuePtr (name), - StringValuePtr (password), - StringValuePtr (resource), - auth_callback, - (gpointer) func, NULL, - NULL)); -} - -VALUE -conn_set_keep_alive_rate (VALUE self, VALUE rate) -{ - LmConnection *conn = rb_lm_connection_from_ruby_object (self); - - lm_connection_set_keep_alive_rate (conn, NUM2UINT (rate)); - - return Qnil; -} - -/* - * VALUE -conn_get_keep_alive_rate (VALUE self) -{ - LmConnection *connection; -} */ - -VALUE -conn_is_open (VALUE self) -{ - LmConnection *conn = rb_lm_connection_from_ruby_object (self); - - return GBOOL2RVAL (lm_connection_is_open (conn)); -} - -VALUE -conn_is_authenticated (VALUE self) -{ - LmConnection *conn = rb_lm_connection_from_ruby_object (self); - - return GBOOL2RVAL (lm_connection_is_authenticated (conn)); -} - -VALUE -conn_get_server (VALUE self) -{ - LmConnection *conn = rb_lm_connection_from_ruby_object (self); - - return rb_str_new2 (lm_connection_get_server (conn)); -} - -VALUE -conn_set_server (VALUE self, VALUE server) -{ - LmConnection *conn = rb_lm_connection_from_ruby_object (self); - - if (!rb_respond_to (server, rb_intern ("to_s"))) { - rb_raise (rb_eArgError, "server should respond to to_s"); - } else { - VALUE str_val = rb_funcall (server, rb_intern ("to_s"), 0); - lm_connection_set_server (conn, StringValuePtr (str_val)); - } - - return Qnil; -} - -VALUE -conn_get_jid (VALUE self) -{ - LmConnection *conn = rb_lm_connection_from_ruby_object (self); - - return rb_str_new2 (lm_connection_get_jid (conn)); -} - -VALUE -conn_set_jid (VALUE self, VALUE jid) -{ - LmConnection *conn = rb_lm_connection_from_ruby_object (self); - - if (!rb_respond_to (jid, rb_intern ("to_s"))) { - rb_raise (rb_eArgError, "jid should respond to to_s"); - } else { - VALUE str_val = rb_funcall (jid, rb_intern ("to_s"), 0); - lm_connection_set_jid (conn, StringValuePtr (str_val)); - } - - return Qnil; -} - -VALUE -conn_get_port (VALUE self) -{ - LmConnection *conn = rb_lm_connection_from_ruby_object (self); - - return UINT2NUM (lm_connection_get_port (conn)); -} - -VALUE -conn_set_port (VALUE self, VALUE port) -{ - LmConnection *conn = rb_lm_connection_from_ruby_object (self); - - lm_connection_set_port (conn, NUM2UINT (port)); - - return Qnil; -} - -VALUE -conn_get_ssl (VALUE self) -{ - LmConnection *conn = rb_lm_connection_from_ruby_object (self); - - return LMSSL2RVAL (lm_connection_get_ssl (conn)); -} - -VALUE -conn_set_ssl (VALUE self, VALUE ssl_rval) -{ - LmConnection *conn = rb_lm_connection_from_ruby_object (self); - LmSSL *ssl = rb_lm_ssl_from_ruby_object (ssl_rval); - - lm_connection_set_ssl (conn, ssl); - - return Qnil; -} - -VALUE -conn_get_proxy (VALUE self) -{ - LmConnection *conn = rb_lm_connection_from_ruby_object (self); - - return LMPROXY2RVAL (lm_connection_get_proxy (conn)); -} - -VALUE -conn_set_proxy (VALUE self, VALUE proxy_rval) -{ - LmConnection *conn = rb_lm_connection_from_ruby_object (self); - LmProxy *proxy = rb_lm_proxy_from_ruby_object (proxy_rval); - - lm_connection_set_proxy (conn, proxy); - - return Qnil; -} - -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); - - return INT2FIX (lm_connection_get_state (conn)); -} - -static LmHandlerResult -msg_handler_cb (LmMessageHandler *handler, - LmConnection *connection, - LmMessage *message, - gpointer user_data) -{ - rb_funcall ((VALUE)user_data, rb_intern ("call"), 1, - LMMESSAGE2RVAL (message)); - - return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; -} - -VALUE -conn_add_msg_handler (int argc, VALUE *argv, VALUE self) -{ - LmConnection *conn = rb_lm_connection_from_ruby_object (self); - VALUE type, func; - LmMessageHandler *handler; - - rb_scan_args (argc, argv, "1&", &type, &func); - if (NIL_P (func)) { - func = rb_block_proc (); - } - - handler = lm_message_handler_new (msg_handler_cb, (gpointer) func, NULL); - - lm_connection_register_message_handler (conn, handler, - rb_lm_message_type_from_ruby_object (type), - LM_HANDLER_PRIORITY_NORMAL); - lm_message_handler_unref (handler); - - return Qnil; -} - -void -Init_lm_connection (VALUE lm_mLM) -{ - lm_cConnection = rb_define_class_under (lm_mLM, "Connection", - rb_cObject); - - rb_define_alloc_func (lm_cConnection, conn_allocate); - - rb_define_method (lm_cConnection, "initialize", conn_initialize, -1); - rb_define_method (lm_cConnection, "open", conn_open, -1); - rb_define_method (lm_cConnection, "close", conn_close, 0); - rb_define_method (lm_cConnection, "authenticate", conn_auth, -1); - rb_define_method (lm_cConnection, "keep_alive_rate=", conn_set_keep_alive_rate, 1); - /* rb_define_method (lm_cConnection, "keep_alive_rate", conn_get_keep_alive_rate, 0); */ - rb_define_method (lm_cConnection, "open?", conn_is_open, 0); - rb_define_method (lm_cConnection, "authenticated?", conn_is_authenticated, 0); - rb_define_method (lm_cConnection, "server", conn_get_server, 0); - rb_define_method (lm_cConnection, "server=", conn_set_server, 1); - rb_define_method (lm_cConnection, "jid", conn_get_jid, 0); - rb_define_method (lm_cConnection, "jid=", conn_set_jid, 1); - rb_define_method (lm_cConnection, "port", conn_get_port, 0); - rb_define_method (lm_cConnection, "port=", conn_set_port, 1); - - rb_define_method (lm_cConnection, "ssl", conn_get_ssl, 0); - rb_define_method (lm_cConnection, "ssl=", conn_set_ssl, 1); - rb_define_method (lm_cConnection, "proxy", conn_get_proxy, 0); - rb_define_method (lm_cConnection, "proxy=", conn_set_proxy, 1); - - /* 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_with_reply", conn_send_with_reply, -1); - rb_define_method (lm_cConnection, "send_raw", conn_send_raw, 1); - */ - - rb_define_method (lm_cConnection, "state", conn_get_state, 0); - rb_define_method (lm_cConnection, "add_message_handler", conn_add_msg_handler, -1); -} diff -r 95287bd6f233 -r 8623ce9ef39d bindings/ruby/rblm-constants.c --- a/bindings/ruby/rblm-constants.c Thu Apr 10 21:14:27 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,266 +0,0 @@ -#include "rblm.h" - -VALUE lm_mMessageType; -VALUE lm_mMessageSubType; -VALUE lm_mDisconnectReason; -VALUE lm_mConnectionState; -VALUE lm_mProxyType; -VALUE lm_mCertificateStatus; -VALUE lm_mSSLStatus; -VALUE lm_mSSLResponse; - -LmConnectionState -rb_lm_connection_state_from_ruby_object (VALUE obj) -{ - LmConnectionState state; - - state = FIX2INT (obj); - if (state < LM_CONNECTION_STATE_CLOSED || - state > LM_CONNECTION_STATE_AUTHENTICATED) { - rb_raise (rb_eArgError, - "invalid LmConnectionState: %d (expected %d <= LmConnectionState <= %d)", - state, LM_CONNECTION_STATE_CLOSED, - LM_CONNECTION_STATE_AUTHENTICATED); - } - - return state; -} - -LmDisconnectReason -rb_lm_disconnect_reason_from_ruby_object (VALUE obj) -{ - LmDisconnectReason reason; - - reason = FIX2INT (obj); - if (reason < LM_DISCONNECT_REASON_OK || - reason > LM_DISCONNECT_REASON_UNKNOWN) { - rb_raise (rb_eArgError, - "invalid LmDisconnectReason: %d (expected %d <= LmDisconnectReason <= %d)", - reason, - LM_DISCONNECT_REASON_OK, - LM_DISCONNECT_REASON_UNKNOWN); - } - - return reason; -} - -LmMessageType -rb_lm_message_type_from_ruby_object (VALUE obj) -{ - LmMessageType type; - - type = FIX2INT (obj); - if (type < LM_MESSAGE_TYPE_MESSAGE || - type > LM_MESSAGE_TYPE_IQ) { - rb_raise (rb_eArgError, - "invalid LmMessageType: %d (expected %d <= LmMessageType <= %d)", - type, LM_MESSAGE_TYPE_MESSAGE, - LM_MESSAGE_TYPE_IQ); - } - - return type; -} - -LmMessageSubType -rb_lm_message_sub_type_from_ruby_object (VALUE obj) -{ - LmMessageSubType type; - - type = FIX2INT (obj); - if (type < LM_MESSAGE_SUB_TYPE_AVAILABLE || - type > LM_MESSAGE_SUB_TYPE_ERROR) { - rb_raise (rb_eArgError, - "invalid LmMessageSubType: %d (expected %d <= LmMessageSubType <= %d)", - type, LM_MESSAGE_SUB_TYPE_AVAILABLE, - LM_MESSAGE_SUB_TYPE_ERROR); - } - - return type; -} - -LmProxyType -rb_lm_proxy_type_from_ruby_object (VALUE obj) -{ - LmProxyType type; - - type = FIX2INT (obj); - if (type < LM_PROXY_TYPE_NONE || type > LM_PROXY_TYPE_HTTP) { - rb_raise (rb_eArgError, - "invalid LmProxyType: %d (expected %d <= LmProxyType <= %d)", - type, LM_PROXY_TYPE_NONE, LM_PROXY_TYPE_HTTP); - } - - return type; -} - -LmCertificateStatus -rb_lm_certificate_status_from_ruby_object (VALUE obj) -{ - LmCertificateStatus status; - - status = FIX2INT (obj); - if (status < LM_CERT_INVALID || status > LM_CERT_REVOKED) { - rb_raise (rb_eArgError, - "invalid LmCertificateStatus: %d (expected %d <= LmCertificateStatus <= %d)", - status, LM_CERT_INVALID, LM_CERT_REVOKED); - } - - return status; -} - -LmSSLStatus -rb_lm_ssl_status_from_ruby_object (VALUE obj) -{ - LmSSLStatus status; - - status = FIX2INT (obj); - if (status < LM_SSL_STATUS_NO_CERT_FOUND || - status > LM_SSL_STATUS_GENERIC_ERROR) { - rb_raise (rb_eArgError, - "invalid LmSSLStatus: %d (expected %d <= LmSSLStatus <= %d)", - status, LM_SSL_STATUS_NO_CERT_FOUND, - LM_SSL_STATUS_GENERIC_ERROR); - } - - return status; -} - -LmSSLResponse -rb_lm_ssl_response_from_ruby_object (VALUE obj) -{ - LmSSLResponse response; - - response = FIX2INT (obj); - if (response < LM_SSL_RESPONSE_CONTINUE || - response > LM_SSL_RESPONSE_STOP) { - rb_raise (rb_eArgError, - "invalid LmSSLResponse: %d (expected %d <= LmSSLResponse <= %d)", - response, - LM_SSL_RESPONSE_CONTINUE, LM_SSL_RESPONSE_STOP); - } - - return response; -} - -void -Init_lm_constants (VALUE lm_mLM) -{ - /* LmMessageType */ - lm_mMessageType = rb_define_module_under (lm_mLM, "MessageType"); - - rb_define_const (lm_mMessageType, "MESSAGE", - INT2FIX (LM_MESSAGE_TYPE_MESSAGE)); - rb_define_const (lm_mMessageType, "PRESENCE", - INT2FIX (LM_MESSAGE_TYPE_PRESENCE)); - rb_define_const (lm_mMessageType, "IQ", - INT2FIX (LM_MESSAGE_TYPE_IQ)); - - /* LmMessageSubType */ - lm_mMessageSubType = rb_define_module_under (lm_mLM, "MessageSubType"); - - rb_define_const (lm_mMessageSubType, "AVAILABLE", - INT2FIX (LM_MESSAGE_SUB_TYPE_AVAILABLE)); - rb_define_const (lm_mMessageSubType, "NORMAL", - INT2FIX (LM_MESSAGE_SUB_TYPE_NORMAL)); - rb_define_const (lm_mMessageSubType, "CHAT", - INT2FIX (LM_MESSAGE_SUB_TYPE_CHAT)); - rb_define_const (lm_mMessageSubType, "GROUPCHAT", - INT2FIX (LM_MESSAGE_SUB_TYPE_GROUPCHAT)); - rb_define_const (lm_mMessageSubType, "HEADLINE", - INT2FIX (LM_MESSAGE_SUB_TYPE_HEADLINE)); - rb_define_const (lm_mMessageSubType, "UNAVAILABLE", - INT2FIX (LM_MESSAGE_SUB_TYPE_UNAVAILABLE)); - rb_define_const (lm_mMessageSubType, "PROBE", - INT2FIX (LM_MESSAGE_SUB_TYPE_PROBE)); - rb_define_const (lm_mMessageSubType, "SUBSCRIBE", - INT2FIX (LM_MESSAGE_SUB_TYPE_SUBSCRIBE)); - rb_define_const (lm_mMessageSubType, "UNSUBSCRIBE", - INT2FIX (LM_MESSAGE_SUB_TYPE_UNSUBSCRIBE)); - rb_define_const (lm_mMessageSubType, "SUBSCRIBED", - INT2FIX (LM_MESSAGE_SUB_TYPE_SUBSCRIBED)); - rb_define_const (lm_mMessageSubType, "UNSUBSCRIBED", - INT2FIX (LM_MESSAGE_SUB_TYPE_UNSUBSCRIBED)); - rb_define_const (lm_mMessageSubType, "GET", - INT2FIX (LM_MESSAGE_SUB_TYPE_GET)); - rb_define_const (lm_mMessageSubType, "SET", - INT2FIX (LM_MESSAGE_SUB_TYPE_SET)); - rb_define_const (lm_mMessageSubType, "RESULT", - INT2FIX (LM_MESSAGE_SUB_TYPE_RESULT)); - rb_define_const (lm_mMessageSubType, "ERROR", - INT2FIX (LM_MESSAGE_SUB_TYPE_ERROR)); - - /* LmDisconnectReason */ - lm_mDisconnectReason = rb_define_module_under (lm_mLM, "DisconnectReason"); - - rb_define_const (lm_mDisconnectReason, "OK", - INT2FIX (LM_DISCONNECT_REASON_OK)); - rb_define_const (lm_mDisconnectReason, "PING_TIME_OUT", - INT2FIX (LM_DISCONNECT_REASON_PING_TIME_OUT)); - rb_define_const (lm_mDisconnectReason, "HUP", - INT2FIX (LM_DISCONNECT_REASON_HUP)); - rb_define_const (lm_mDisconnectReason, "ERROR", - INT2FIX (LM_DISCONNECT_REASON_ERROR)); - rb_define_const (lm_mDisconnectReason, "RESOURCE_CONFLICT", - INT2FIX (LM_DISCONNECT_REASON_RESOURCE_CONFLICT)); - rb_define_const (lm_mDisconnectReason, "INVALID_XML", - INT2FIX (LM_DISCONNECT_REASON_INVALID_XML)); - rb_define_const (lm_mDisconnectReason, "UNKNOWN", - INT2FIX (LM_DISCONNECT_REASON_UNKNOWN)); - - /* LmConnectionState */ - lm_mConnectionState = rb_define_module_under (lm_mLM, "ConnectionState"); - rb_define_const (lm_mConnectionState, "CLOSED", - INT2FIX (LM_CONNECTION_STATE_CLOSED)); - rb_define_const (lm_mConnectionState, "OPENING", - INT2FIX (LM_CONNECTION_STATE_OPENING)); - rb_define_const (lm_mConnectionState, "OPEN", - INT2FIX (LM_CONNECTION_STATE_OPEN)); - rb_define_const (lm_mConnectionState, "AUTHENTICATING", - INT2FIX (LM_CONNECTION_STATE_AUTHENTICATING)); - rb_define_const (lm_mConnectionState, "AUTHENTICATED", - INT2FIX (LM_CONNECTION_STATE_AUTHENTICATED)); - - /* LmProxyType */ - lm_mProxyType = rb_define_module_under (lm_mLM, "ProxyType"); - - rb_define_const (lm_mProxyType, "NONE", - INT2FIX (LM_PROXY_TYPE_NONE)); - rb_define_const (lm_mProxyType, "HTTP", - INT2FIX (LM_PROXY_TYPE_HTTP)); - - /* LmCertificateStatus */ - lm_mCertificateStatus = rb_define_module_under (lm_mLM, - "CertificateStatus"); - rb_define_const (lm_mCertificateStatus, "INVALID", - INT2FIX (LM_CERT_INVALID)); - rb_define_const (lm_mCertificateStatus, "ISSUER_NOT_FOUND", - INT2FIX (LM_CERT_ISSUER_NOT_FOUND)); - rb_define_const (lm_mCertificateStatus, "REVOKED", - INT2FIX (LM_CERT_REVOKED)); - - /* LmSSLStatus */ - lm_mSSLStatus = rb_define_module_under (lm_mLM, "SSLStatus"); - - rb_define_const (lm_mSSLStatus, "NO_CERT_FOUND", - INT2FIX (LM_SSL_STATUS_NO_CERT_FOUND)); - rb_define_const (lm_mSSLStatus, "UNTRUSTED_CERT", - INT2FIX (LM_SSL_STATUS_UNTRUSTED_CERT)); - rb_define_const (lm_mSSLStatus, "CERT_EXPIRED", - INT2FIX (LM_SSL_STATUS_CERT_EXPIRED)); - rb_define_const (lm_mSSLStatus, "CERT_NOT_ACTIVATED", - INT2FIX (LM_SSL_STATUS_CERT_NOT_ACTIVATED)); - rb_define_const (lm_mSSLStatus, "CERT_HOSTNAME_MISMATCH", - INT2FIX (LM_SSL_STATUS_CERT_HOSTNAME_MISMATCH)); - rb_define_const (lm_mSSLStatus, "CERT_FINGERPRINT_MISMATCH", - INT2FIX (LM_SSL_STATUS_CERT_FINGERPRINT_MISMATCH)); - rb_define_const (lm_mSSLStatus, "GENERIC_ERROR", - INT2FIX (LM_SSL_STATUS_GENERIC_ERROR)); - - /* LmSSLResponse */ - lm_mSSLResponse = rb_define_module_under (lm_mLM, "SSLResponse"); - - rb_define_const (lm_mSSLResponse, "CONTINUE", - INT2FIX (LM_SSL_RESPONSE_CONTINUE)); - rb_define_const (lm_mSSLResponse, "STOP", - INT2FIX (LM_SSL_RESPONSE_STOP)); -} diff -r 95287bd6f233 -r 8623ce9ef39d bindings/ruby/rblm-message-node.c --- a/bindings/ruby/rblm-message-node.c Thu Apr 10 21:14:27 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,240 +0,0 @@ -#include -#include - -VALUE lm_cMessageNode; - -LmMessageNode * -rb_lm_message_node_from_ruby_object (VALUE obj) -{ - LmMessageNode *node; - - if (!rb_lm__is_kind_of (obj, lm_cMessageNode)) { - rb_raise (rb_eTypeError, "not a LmMessageNode"); - } - - Data_Get_Struct (obj, LmMessageNode, node); - - return node; -} - -void -msg_node_free (LmMessageNode *node) -{ - lm_message_node_unref (node); -} - -VALUE -rb_lm_message_node_to_ruby_object (LmMessageNode *node) -{ - if (node) { - lm_message_node_ref (node); - return Data_Wrap_Struct (lm_cMessageNode, NULL, - msg_node_free, node); - } else { - return Qnil; - } -} - -VALUE -msg_node_allocate (VALUE klass) -{ - return Data_Wrap_Struct (klass, NULL, msg_node_free, NULL); -} - -VALUE -msg_node_get_name (VALUE self) -{ - LmMessageNode *node = rb_lm_message_node_from_ruby_object (self); - - return rb_str_new2 (node->name); -} - -VALUE -msg_node_get_value (VALUE self) -{ - LmMessageNode *node = rb_lm_message_node_from_ruby_object (self); - - if (lm_message_node_get_value (node)) { - return rb_str_new2 (lm_message_node_get_value (node)); - } - - return Qnil; -} - -VALUE -msg_node_set_value (VALUE self, VALUE value) -{ - LmMessageNode *node = rb_lm_message_node_from_ruby_object (self); - char *value_str = NULL; - - 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); - } - - lm_message_node_set_value (node, value_str); -} - -VALUE -msg_node_add_child (int argc, VALUE *argv, VALUE self) -{ - LmMessageNode *node = rb_lm_message_node_from_ruby_object (self); - LmMessageNode *child; - VALUE name, value; - char *value_str = NULL; - - rb_scan_args (argc, argv, "11", &name, &value); - - if (!NIL_P (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), - value_str); - - return LMMESSAGENODE2RVAL (child); -} - -VALUE -msg_node_get_attribute (VALUE self, VALUE attr) -{ - LmMessageNode *node = rb_lm_message_node_from_ruby_object (self); - - if (lm_message_node_get_attribute (node, StringValuePtr (attr))) { - return rb_str_new2 (lm_message_node_get_attribute (node, - StringValuePtr (attr))); - } - - return Qnil; -} - -VALUE -msg_node_set_attribute (VALUE self, VALUE attr, VALUE value) -{ - LmMessageNode *node = rb_lm_message_node_from_ruby_object (self); - char *value_str = NULL; - - if (!NIL_P (value)) { - value_str = StringValuePtr (value); - } - - lm_message_node_set_attribute (node, StringValuePtr (attr), value_str); - - return Qnil; -} - -VALUE -msg_node_get_child (VALUE self, VALUE name) -{ - LmMessageNode *node = rb_lm_message_node_from_ruby_object (self); - LmMessageNode *child; - - child = lm_message_node_get_child (node, StringValuePtr (name)); - - return LMMESSAGENODE2RVAL (child); -} - -VALUE -msg_node_find_child (VALUE self, VALUE name) -{ - LmMessageNode *node = rb_lm_message_node_from_ruby_object (self); - LmMessageNode *child; - - child = lm_message_node_find_child (node, StringValuePtr (name)); - - return LMMESSAGENODE2RVAL (child); -} - -VALUE -msg_node_get_is_raw_mode (VALUE self) -{ - LmMessageNode *node = rb_lm_message_node_from_ruby_object (self); - - return GBOOL2RVAL (lm_message_node_get_raw_mode (node)); -} - -VALUE -msg_node_set_is_raw_mode (VALUE self, VALUE raw_mode) -{ - LmMessageNode *node = rb_lm_message_node_from_ruby_object (self); - - lm_message_node_set_raw_mode (node, RVAL2GBOOL (raw_mode)); - - return Qnil; -} - -VALUE -msg_node_to_string (VALUE self) -{ - LmMessageNode *node = rb_lm_message_node_from_ruby_object (self); - - return rb_str_new2 (lm_message_node_to_string (node)); -} - -VALUE -msg_node_get_next (VALUE self) -{ - LmMessageNode *node = rb_lm_message_node_from_ruby_object (self); - - return LMMESSAGENODE2RVAL (node->next); -} - -VALUE -msg_node_get_prev (VALUE self) -{ - LmMessageNode *node = rb_lm_message_node_from_ruby_object (self); - - return LMMESSAGENODE2RVAL (node->prev); -} - -VALUE -msg_node_get_parent (VALUE self) -{ - LmMessageNode *node = rb_lm_message_node_from_ruby_object (self); - - return LMMESSAGENODE2RVAL (node->parent); -} - -VALUE -msg_node_get_children (VALUE self) -{ - LmMessageNode *node = rb_lm_message_node_from_ruby_object (self); - - return LMMESSAGENODE2RVAL (node->children); -} - -extern void -Init_lm_message_node (VALUE lm_mLM) -{ - lm_cMessageNode = rb_define_class_under (lm_mLM, "MessageNode", - rb_cObject); - - rb_define_alloc_func (lm_cMessageNode, msg_node_allocate); - - rb_define_method (lm_cMessageNode, "name", msg_node_get_name, 0); - rb_define_method (lm_cMessageNode, "value", msg_node_get_value, 0); - rb_define_method (lm_cMessageNode, "value=", msg_node_set_value, 1); - - rb_define_method (lm_cMessageNode, "add_child", msg_node_add_child, -1); - rb_define_method (lm_cMessageNode, "get_attribute", msg_node_get_attribute, 1); - rb_define_method (lm_cMessageNode, "set_attribute", msg_node_set_attribute, 2); - rb_define_method (lm_cMessageNode, "get_child", msg_node_get_child, 1); - rb_define_method (lm_cMessageNode, "find_child", msg_node_find_child, 1); - - rb_define_method (lm_cMessageNode, "raw_mode", msg_node_get_is_raw_mode, 0); - rb_define_method (lm_cMessageNode, "raw_mode=", msg_node_set_is_raw_mode, 1); - - rb_define_method (lm_cMessageNode, "to_s", msg_node_to_string, 0); - - rb_define_method (lm_cMessageNode, "next", msg_node_get_next, 0); - rb_define_method (lm_cMessageNode, "prev", msg_node_get_prev, 0); - rb_define_method (lm_cMessageNode, "parent", msg_node_get_parent, 0); - rb_define_method (lm_cMessageNode, "children", msg_node_get_children, 0); -} diff -r 95287bd6f233 -r 8623ce9ef39d bindings/ruby/rblm-message.c --- a/bindings/ruby/rblm-message.c Thu Apr 10 21:14:27 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,117 +0,0 @@ -#include "rblm.h" -#include "rblm-private.h" - -/* How to handle type, sub_type and root node*/ - -VALUE lm_cMessage; - -LmMessage * -rb_lm_message_from_ruby_object (VALUE obj) -{ - LmMessage *m; - - if (!rb_lm__is_kind_of (obj, lm_cMessage)) { - rb_raise (rb_eTypeError, "not a LmMessage"); - } - - Data_Get_Struct (obj, LmMessage, m); - - return m; -} - -void -msg_free (LmMessage *m) -{ - lm_message_unref (m); -} - -VALUE -rb_lm_message_to_ruby_object (LmMessage *m) -{ - if (m) { - lm_message_ref (m); - return Data_Wrap_Struct (lm_cMessage, NULL, - msg_free, m); - } else { - return Qnil; - } -} - -VALUE -msg_allocate (VALUE klass) -{ - return Data_Wrap_Struct (klass, NULL, msg_free, NULL); -} - -VALUE -msg_initialize (int argc, VALUE *argv, VALUE self) -{ - LmMessage *m; - VALUE to, type, sub_type; - char *to_str = NULL; - - rb_scan_args (argc, argv, "21", &to, &type, &sub_type); - - /* To can be nil */ - if (!NIL_P (to)) { - if (!rb_respond_to (to, rb_intern ("to_s"))) { - rb_raise (rb_eArgError, "to should respond to to_s"); - } else { - VALUE str_val = rb_funcall (to, rb_intern ("to_s"), 0); - to_str = StringValuePtr (str_val); - } - } - - if (NIL_P (sub_type)) { - /* Without sub_type */ - m = lm_message_new (to_str, FIX2INT (type)); - } else { - m = lm_message_new_with_sub_type (to_str, - FIX2INT (type), - FIX2INT (sub_type)); - } - - DATA_PTR (self) = m; - - return self; -} - -VALUE -msg_get_type (VALUE self) -{ - LmMessage *m = rb_lm_message_from_ruby_object (self); - - return INT2FIX (lm_message_get_type (m)); -} - -VALUE -msg_get_sub_type (VALUE self) -{ - LmMessage *m = rb_lm_message_from_ruby_object (self); - - return INT2FIX (lm_message_get_sub_type (m)); -} - -VALUE -msg_get_root_node (VALUE self) -{ - LmMessage *m = rb_lm_message_from_ruby_object (self); - - return LMMESSAGENODE2RVAL (m->node); -} - -extern void -Init_lm_message (VALUE lm_mLM) -{ - lm_cMessage = rb_define_class_under (lm_mLM, "Message", rb_cObject); - - rb_define_alloc_func (lm_cMessage, msg_allocate); - - rb_define_method (lm_cMessage, "initialize", msg_initialize, -1); - 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"); -} - diff -r 95287bd6f233 -r 8623ce9ef39d bindings/ruby/rblm-private.c --- a/bindings/ruby/rblm-private.c Thu Apr 10 21:14:27 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,8 +0,0 @@ -#include "rblm-private.h" - -gboolean -rb_lm__is_kind_of (VALUE object, VALUE klass) -{ - return RVAL2GBOOL (rb_obj_is_kind_of (object, klass)); -} - diff -r 95287bd6f233 -r 8623ce9ef39d bindings/ruby/rblm-private.h --- a/bindings/ruby/rblm-private.h Thu Apr 10 21:14:27 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,40 +0,0 @@ - -#ifndef __RBLM_PRIVATE_H__ -#define __RBLM_PRIVATE_H__ - -#include -#include -#include - -#define GBOOL2RVAL(x) (x == TRUE ? Qtrue : Qfalse) -#define RVAL2GBOOL(x) RTEST(x) - -#define LMMESSAGENODE2RVAL(x) (rb_lm_message_node_to_ruby_object(x)) -#define LMSSL2RVAL(x) (rb_lm_ssl_to_ruby_object(x)) -#define LMPROXY2RVAL(x) (rb_lm_proxy_to_ruby_object(x)) -#define LMMESSAGE2RVAL(x) (rb_lm_message_to_ruby_object(x)) - -gboolean rb_lm__is_kind_of (VALUE object, VALUE klass); - -VALUE rb_lm_message_to_ruby_object (LmMessage *m); -VALUE rb_lm_message_node_to_ruby_object (LmMessageNode *node); -VALUE rb_lm_ssl_to_ruby_object (LmSSL *ssl); -VALUE rb_lm_proxy_to_ruby_object (LmProxy *proxy); - -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); -LmMessageSubType rb_lm_message_sub_type_from_ruby_object (VALUE obj); -LmProxyType rb_lm_proxy_type_from_ruby_object (VALUE obj); -LmCertificateStatus rb_lm_certificate_status_from_ruby_object (VALUE obj); -LmSSLStatus rb_lm_ssl_status_from_ruby_object (VALUE obj); -LmSSLResponse rb_lm_ssl_response_from_ruby_object (VALUE obj); - -#endif /* __RBLM_PRIVATE_H__ */ - diff -r 95287bd6f233 -r 8623ce9ef39d bindings/ruby/rblm-proxy.c --- a/bindings/ruby/rblm-proxy.c Thu Apr 10 21:14:27 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,210 +0,0 @@ -#include "rblm.h" - -VALUE lm_cProxy; - -LmProxy * -rb_lm_proxy_from_ruby_object (VALUE obj) -{ - LmProxy *proxy; - - if (!rb_lm__is_kind_of (obj, lm_cProxy)) { - rb_raise (rb_eTypeError, "not a LmProxy"); - } - - Data_Get_Struct (obj, LmProxy, proxy); - - return proxy; -} - -void -proxy_free (LmProxy *proxy) -{ - lm_proxy_unref (proxy); -} - -VALUE -rb_lm_proxy_to_ruby_object (LmProxy *proxy) -{ - if (proxy) { - lm_proxy_ref (proxy); - return Data_Wrap_Struct (lm_cProxy, NULL, - proxy_free, proxy); - } else { - return Qnil; - } -} -VALUE -proxy_allocate (VALUE klass) -{ - return Data_Wrap_Struct (klass, NULL, proxy_free, NULL); -} - -VALUE -proxy_initialize (int argc, VALUE *argv, VALUE self) -{ - LmProxy *proxy; - VALUE type, server, port; - char *server_str = NULL; - - rb_scan_args (argc, argv, "12", &type, &server, &port); - - proxy = lm_proxy_new (FIX2INT (type)); - - if (!NIL_P (server)) { - if (!rb_respond_to (server, rb_intern ("to_s"))) { - rb_raise (rb_eArgError, "server should respond to to_s"); - } else { - VALUE str_val = rb_funcall (server, rb_intern ("to_s"), 0); - lm_proxy_set_server (proxy, StringValuePtr (str_val)); - } - } - - if (!NIL_P (port)) { - lm_proxy_set_port (proxy, NUM2UINT (port)); - } - - DATA_PTR (self) = proxy; - - return self; -} - -VALUE -proxy_get_type (VALUE self) -{ - LmProxy *proxy = rb_lm_proxy_from_ruby_object (self); - - return INT2FIX (lm_proxy_get_type (proxy)); -} - -VALUE -proxy_set_type (VALUE self, VALUE type) -{ - LmProxy *proxy = rb_lm_proxy_from_ruby_object (self); - - lm_proxy_set_type (proxy, FIX2INT (type)); - - return Qnil; -} - -VALUE -proxy_get_server (VALUE self) -{ - LmProxy *proxy = rb_lm_proxy_from_ruby_object (self); - - if (lm_proxy_get_server (proxy)) { - return rb_str_new2 (lm_proxy_get_server (proxy)); - } - - return Qnil; -} - -VALUE -proxy_set_server (VALUE self, VALUE server) -{ - LmProxy *proxy = rb_lm_proxy_from_ruby_object (self); - VALUE str_val; - - if (!rb_respond_to (server, rb_intern ("to_s"))) { - rb_raise (rb_eArgError, "server should respond to to_s"); - } - - str_val = rb_funcall (server, rb_intern ("to_s"), 0); - lm_proxy_set_server (proxy, StringValuePtr (str_val)); - - return Qnil; -} - -VALUE -proxy_get_port (VALUE self) -{ - LmProxy *proxy = rb_lm_proxy_from_ruby_object (self); - - return UINT2NUM (lm_proxy_get_port (proxy)); -} - -VALUE -proxy_set_port (VALUE self, VALUE port) -{ - LmProxy *proxy = rb_lm_proxy_from_ruby_object (self); - - lm_proxy_set_port (proxy, NUM2UINT (port)); - - return Qnil; -} - -VALUE -proxy_get_username (VALUE self) -{ - LmProxy *proxy = rb_lm_proxy_from_ruby_object (self); - - if (lm_proxy_get_username (proxy)) { - return rb_str_new2 (lm_proxy_get_username (proxy)); - } - - return Qnil; -} - -VALUE -proxy_set_username (VALUE self, VALUE username) -{ - LmProxy *proxy = rb_lm_proxy_from_ruby_object (self); - VALUE str_val; - - if (!rb_respond_to (username, rb_intern ("to_s"))) { - rb_raise (rb_eArgError, "username should respond to to_s"); - } - - str_val = rb_funcall (username, rb_intern ("to_s"), 0); - lm_proxy_set_username (proxy, StringValuePtr (str_val)); - - return Qnil; -} - -VALUE -proxy_get_password (VALUE self) -{ - LmProxy *proxy = rb_lm_proxy_from_ruby_object (self); - - if (lm_proxy_get_password (proxy)) { - return rb_str_new2 (lm_proxy_get_password (proxy)); - } - - return Qnil; -} - -VALUE -proxy_set_password (VALUE self, VALUE password) -{ - LmProxy *proxy = rb_lm_proxy_from_ruby_object (self); - VALUE str_val; - - if (!rb_respond_to (password, rb_intern ("to_s"))) { - rb_raise (rb_eArgError, "password should respond to to_s"); - } - - str_val = rb_funcall (password, rb_intern ("to_s"), 0); - lm_proxy_set_password (proxy, StringValuePtr (str_val)); - - return Qnil; -} - -extern void -Init_lm_proxy (VALUE lm_mLM) -{ - lm_cProxy = rb_define_class_under (lm_mLM, "Proxy", rb_cObject); - - rb_define_alloc_func (lm_cProxy, proxy_allocate); - - rb_define_method (lm_cProxy, "initialize", proxy_initialize, -1); - rb_define_method (lm_cProxy, "type", proxy_get_type, 0); - rb_define_method (lm_cProxy, "type=", proxy_set_type, 1); - rb_define_method (lm_cProxy, "server", proxy_get_server, 0); - rb_define_method (lm_cProxy, "server=", proxy_set_server, 1); - rb_define_method (lm_cProxy, "port", proxy_get_port, 0); - rb_define_method (lm_cProxy, "port=", proxy_set_port, 1); - rb_define_method (lm_cProxy, "username", proxy_get_username, 0); - rb_define_method (lm_cProxy, "username=", proxy_set_username, 1); - rb_define_method (lm_cProxy, "password", proxy_get_password, 0); - rb_define_method (lm_cProxy, "password=", proxy_set_password, 1); -} - diff -r 95287bd6f233 -r 8623ce9ef39d bindings/ruby/rblm-ssl.c --- a/bindings/ruby/rblm-ssl.c Thu Apr 10 21:14:27 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,171 +0,0 @@ -#include "rblm.h" -#include "rblm-private.h" - -VALUE lm_cSSL; - -LmSSL * -rb_lm_ssl_from_ruby_object (VALUE obj) -{ - LmSSL *ssl; - - if (!rb_lm__is_kind_of (obj, lm_cSSL)) { - rb_raise (rb_eTypeError, "not a LmSSL"); - } - - Data_Get_Struct (obj, LmSSL, ssl); - - return ssl; -} - -void -ssl_free (LmSSL *ssl) -{ - lm_ssl_unref (ssl); -} - -VALUE -rb_lm_ssl_to_ruby_object (LmSSL *ssl) -{ - if (ssl) { - lm_ssl_ref (ssl); - return Data_Wrap_Struct (lm_cSSL, NULL, - ssl_free, ssl); - } else { - return Qnil; - } -} - -VALUE -ssl_allocate (VALUE klass) -{ - return Data_Wrap_Struct (klass, NULL, ssl_free, NULL); -} - -static VALUE -ssl_is_supported (VALUE self) -{ - return GBOOL2RVAL (lm_ssl_is_supported ()); -} - -static LmSSLResponse -ssl_func_callback (LmSSL *ssl, - LmSSLStatus status, - gpointer user_data) -{ - VALUE response; - - if (!user_data) { - return LM_SSL_RESPONSE_CONTINUE; - } - - response = rb_funcall ((VALUE)user_data, rb_intern ("call"), 1, - INT2FIX (status)); - - return rb_lm_ssl_response_from_ruby_object (response); -} - -static VALUE -ssl_initialize (int argc, VALUE *argv, VALUE self) -{ - LmSSL *ssl; - VALUE fingerprint; - VALUE func; - char *fingerprint_str = NULL; - gpointer func_ptr = NULL; - - rb_scan_args (argc, argv, "01&", &fingerprint, &func); - - if (!NIL_P (func)) { - func_ptr = (gpointer) func; - } - - if (!NIL_P (fingerprint)) { - VALUE str_val; - - if (!rb_respond_to (fingerprint, rb_intern ("to_s"))) { - rb_raise (rb_eArgError, - "fingerprint should respond to to_s"); - } - - str_val = rb_funcall (fingerprint, rb_intern ("to_s"), 0); - fingerprint_str = StringValuePtr (str_val); - } - - ssl = lm_ssl_new (fingerprint_str, ssl_func_callback, - func_ptr, NULL); - - DATA_PTR (self) = ssl; - - return self; -} - -static VALUE -ssl_get_fingerprint (VALUE self) -{ - LmSSL *ssl = rb_lm_ssl_from_ruby_object (self); - - if (lm_ssl_get_fingerprint (ssl)) { - return rb_str_new2 (lm_ssl_get_fingerprint (ssl)); - } - - return Qnil; -} - -static VALUE -ssl_get_use_starttls (VALUE self) -{ - LmSSL *ssl = rb_lm_ssl_from_ruby_object (self); - - return GBOOL2RVAL (lm_ssl_get_use_starttls (ssl)); -} - -static VALUE -ssl_set_use_starttls (VALUE self, VALUE use) -{ - LmSSL *ssl = rb_lm_ssl_from_ruby_object (self); - - lm_ssl_use_starttls (ssl, - RVAL2GBOOL (use), - lm_ssl_get_require_starttls (ssl)); - - return Qnil; -} - -static VALUE -ssl_get_require_starttls (VALUE self) -{ - LmSSL *ssl = rb_lm_ssl_from_ruby_object (self); - - return GBOOL2RVAL (lm_ssl_get_require_starttls (ssl)); -} - -static VALUE -ssl_set_require_starttls (VALUE self, VALUE require) -{ - LmSSL *ssl = rb_lm_ssl_from_ruby_object (self); - - lm_ssl_use_starttls (ssl, - lm_ssl_get_use_starttls (ssl), - RVAL2GBOOL (require)); - - return Qnil; -} - -extern void -Init_lm_ssl (VALUE lm_mLM) -{ - lm_cSSL = rb_define_class_under (lm_mLM, "SSL", rb_cObject); - - rb_define_alloc_func (lm_cSSL, ssl_allocate); - - rb_define_singleton_method (lm_cSSL, "supported?", - ssl_is_supported, 0); - - rb_define_method (lm_cSSL, "initialize", ssl_initialize, -1); - rb_define_method (lm_cSSL, "fingerprint", ssl_get_fingerprint, 0); - rb_define_method (lm_cSSL, "use_starttls", ssl_get_use_starttls, 0); - rb_define_method (lm_cSSL, "use_starttls=", ssl_set_use_starttls, 1); - rb_define_method (lm_cSSL, "require_starttls", ssl_get_require_starttls, 0); - rb_define_method (lm_cSSL, "require_starttls=", ssl_set_require_starttls, 1); -} - diff -r 95287bd6f233 -r 8623ce9ef39d bindings/ruby/rblm.c --- a/bindings/ruby/rblm.c Thu Apr 10 21:14:27 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -#include "rblm.h" - -void -Init_loudmouth (void) -{ - VALUE lm_mLM; - - lm_mLM = rb_define_module ("LM"); - - Init_lm_connection (lm_mLM); - Init_lm_message (lm_mLM); - Init_lm_message_node (lm_mLM); - Init_lm_constants (lm_mLM); - Init_lm_ssl (lm_mLM); - Init_lm_proxy (lm_mLM); -} - diff -r 95287bd6f233 -r 8623ce9ef39d bindings/ruby/rblm.h --- a/bindings/ruby/rblm.h Thu Apr 10 21:14:27 2008 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -#ifndef __RLM_H__ -#define __RLM_H__ - -#include -#include -#include - -extern void Init_loudmouth (void); -extern void Init_lm_connection (VALUE lm_mLM); -extern void Init_lm_message (VALUE lm_mLM); -extern void Init_lm_message_node (VALUE lm_mLM); -extern void Init_lm_constants (VALUE lm_mLM); -extern void Init_lm_ssl (VALUE lm_mLM); -extern void Init_lm_proxy (VALUE lm_mLM); - -#endif /* __RLM_H__ */ - diff -r 95287bd6f233 -r 8623ce9ef39d bindings/ruby/src/rblm-connection.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bindings/ruby/src/rblm-connection.c Thu Apr 10 21:30:17 2008 +0200 @@ -0,0 +1,364 @@ +#include "rblm.h" +#include "rblm-private.h" + +VALUE lm_cConnection; + +VALUE conn_set_server (VALUE self, VALUE server); + +/* -- START of GMainContext hack -- + * This is a hack to get the GMainContext from a ruby VALUE, this will break if + * internals change in Ruby/GLib. + */ +typedef struct { + gpointer boxed; + gboolean own; + gsize type; +} boxed_holder; + +static GMainContext * +rb_lm_hack_get_main_context_from_rval (VALUE ctx_rval) +{ + boxed_holder *holder; + + Data_Get_Struct (ctx_rval, boxed_holder, holder); + + return holder->boxed; +} +/* -- END of GMainContext hack -- */ + +LmConnection * +rb_lm_connection_from_ruby_object (VALUE obj) +{ + LmConnection *conn; + + if (!rb_lm__is_kind_of (obj, lm_cConnection)) { + rb_raise (rb_eTypeError, "not a LmConnection"); + } + + Data_Get_Struct (obj, LmConnection, conn); + + return conn; +} + +void +conn_free (LmConnection *self) +{ + lm_connection_unref (self); +} + +VALUE +conn_allocate (VALUE klass) +{ + return Data_Wrap_Struct (klass, NULL, conn_free, NULL); +} + +VALUE +conn_initialize (int argc, VALUE *argv, VALUE self) +{ + LmConnection *conn; + char *srv_str = NULL; + VALUE server, context; + + rb_scan_args (argc, argv, "02", &server, &context); + + if (!NIL_P (context)) { + GMainContext *ctx; + + ctx = rb_lm_hack_get_main_context_from_rval (context); + + conn = lm_connection_new_with_context (NULL, ctx); + } else { + conn = lm_connection_new (NULL); + } + + DATA_PTR (self) = conn; + + if (!NIL_P (server)) { + conn_set_server (self, server); + } + + return self; +} + +static void +open_callback (LmConnection *conn, gboolean success, gpointer user_data) +{ + rb_funcall((VALUE)user_data, rb_intern ("call"), 1, + GBOOL2RVAL (success)); +} + +VALUE +conn_open (int argc, VALUE *argv, VALUE self) +{ + LmConnection *conn = rb_lm_connection_from_ruby_object (self); + VALUE func; + + rb_scan_args (argc, argv, "0&", &func); + if (NIL_P (func)) { + func = rb_block_proc (); + } + + return GBOOL2RVAL (lm_connection_open (conn, open_callback, + (gpointer) func, NULL, NULL)); +} + +VALUE +conn_close (VALUE self) +{ + LmConnection *conn = rb_lm_connection_from_ruby_object (self); + + return GBOOL2RVAL (lm_connection_close (conn, NULL)); +} + +static void +auth_callback (LmConnection *conn, gboolean success, gpointer user_data) +{ + rb_funcall((VALUE)user_data, rb_intern ("call"), 1, + GBOOL2RVAL (success)); +} + +VALUE +conn_auth (int argc, VALUE *argv, VALUE self) +{ + LmConnection *conn = rb_lm_connection_from_ruby_object (self); + VALUE name, password, resource, func; + + rb_scan_args (argc, argv, "21&", &name, &password, &resource, &func); + if (NIL_P (func)) { + func = rb_block_proc (); + } + + return GBOOL2RVAL (lm_connection_authenticate (conn, + StringValuePtr (name), + StringValuePtr (password), + StringValuePtr (resource), + auth_callback, + (gpointer) func, NULL, + NULL)); +} + +VALUE +conn_set_keep_alive_rate (VALUE self, VALUE rate) +{ + LmConnection *conn = rb_lm_connection_from_ruby_object (self); + + lm_connection_set_keep_alive_rate (conn, NUM2UINT (rate)); + + return Qnil; +} + +/* + * VALUE +conn_get_keep_alive_rate (VALUE self) +{ + LmConnection *connection; +} */ + +VALUE +conn_is_open (VALUE self) +{ + LmConnection *conn = rb_lm_connection_from_ruby_object (self); + + return GBOOL2RVAL (lm_connection_is_open (conn)); +} + +VALUE +conn_is_authenticated (VALUE self) +{ + LmConnection *conn = rb_lm_connection_from_ruby_object (self); + + return GBOOL2RVAL (lm_connection_is_authenticated (conn)); +} + +VALUE +conn_get_server (VALUE self) +{ + LmConnection *conn = rb_lm_connection_from_ruby_object (self); + + return rb_str_new2 (lm_connection_get_server (conn)); +} + +VALUE +conn_set_server (VALUE self, VALUE server) +{ + LmConnection *conn = rb_lm_connection_from_ruby_object (self); + + if (!rb_respond_to (server, rb_intern ("to_s"))) { + rb_raise (rb_eArgError, "server should respond to to_s"); + } else { + VALUE str_val = rb_funcall (server, rb_intern ("to_s"), 0); + lm_connection_set_server (conn, StringValuePtr (str_val)); + } + + return Qnil; +} + +VALUE +conn_get_jid (VALUE self) +{ + LmConnection *conn = rb_lm_connection_from_ruby_object (self); + + return rb_str_new2 (lm_connection_get_jid (conn)); +} + +VALUE +conn_set_jid (VALUE self, VALUE jid) +{ + LmConnection *conn = rb_lm_connection_from_ruby_object (self); + + if (!rb_respond_to (jid, rb_intern ("to_s"))) { + rb_raise (rb_eArgError, "jid should respond to to_s"); + } else { + VALUE str_val = rb_funcall (jid, rb_intern ("to_s"), 0); + lm_connection_set_jid (conn, StringValuePtr (str_val)); + } + + return Qnil; +} + +VALUE +conn_get_port (VALUE self) +{ + LmConnection *conn = rb_lm_connection_from_ruby_object (self); + + return UINT2NUM (lm_connection_get_port (conn)); +} + +VALUE +conn_set_port (VALUE self, VALUE port) +{ + LmConnection *conn = rb_lm_connection_from_ruby_object (self); + + lm_connection_set_port (conn, NUM2UINT (port)); + + return Qnil; +} + +VALUE +conn_get_ssl (VALUE self) +{ + LmConnection *conn = rb_lm_connection_from_ruby_object (self); + + return LMSSL2RVAL (lm_connection_get_ssl (conn)); +} + +VALUE +conn_set_ssl (VALUE self, VALUE ssl_rval) +{ + LmConnection *conn = rb_lm_connection_from_ruby_object (self); + LmSSL *ssl = rb_lm_ssl_from_ruby_object (ssl_rval); + + lm_connection_set_ssl (conn, ssl); + + return Qnil; +} + +VALUE +conn_get_proxy (VALUE self) +{ + LmConnection *conn = rb_lm_connection_from_ruby_object (self); + + return LMPROXY2RVAL (lm_connection_get_proxy (conn)); +} + +VALUE +conn_set_proxy (VALUE self, VALUE proxy_rval) +{ + LmConnection *conn = rb_lm_connection_from_ruby_object (self); + LmProxy *proxy = rb_lm_proxy_from_ruby_object (proxy_rval); + + lm_connection_set_proxy (conn, proxy); + + return Qnil; +} + +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); + + return INT2FIX (lm_connection_get_state (conn)); +} + +static LmHandlerResult +msg_handler_cb (LmMessageHandler *handler, + LmConnection *connection, + LmMessage *message, + gpointer user_data) +{ + rb_funcall ((VALUE)user_data, rb_intern ("call"), 1, + LMMESSAGE2RVAL (message)); + + return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; +} + +VALUE +conn_add_msg_handler (int argc, VALUE *argv, VALUE self) +{ + LmConnection *conn = rb_lm_connection_from_ruby_object (self); + VALUE type, func; + LmMessageHandler *handler; + + rb_scan_args (argc, argv, "1&", &type, &func); + if (NIL_P (func)) { + func = rb_block_proc (); + } + + handler = lm_message_handler_new (msg_handler_cb, (gpointer) func, NULL); + + lm_connection_register_message_handler (conn, handler, + rb_lm_message_type_from_ruby_object (type), + LM_HANDLER_PRIORITY_NORMAL); + lm_message_handler_unref (handler); + + return Qnil; +} + +void +Init_lm_connection (VALUE lm_mLM) +{ + lm_cConnection = rb_define_class_under (lm_mLM, "Connection", + rb_cObject); + + rb_define_alloc_func (lm_cConnection, conn_allocate); + + rb_define_method (lm_cConnection, "initialize", conn_initialize, -1); + rb_define_method (lm_cConnection, "open", conn_open, -1); + rb_define_method (lm_cConnection, "close", conn_close, 0); + rb_define_method (lm_cConnection, "authenticate", conn_auth, -1); + rb_define_method (lm_cConnection, "keep_alive_rate=", conn_set_keep_alive_rate, 1); + /* rb_define_method (lm_cConnection, "keep_alive_rate", conn_get_keep_alive_rate, 0); */ + rb_define_method (lm_cConnection, "open?", conn_is_open, 0); + rb_define_method (lm_cConnection, "authenticated?", conn_is_authenticated, 0); + rb_define_method (lm_cConnection, "server", conn_get_server, 0); + rb_define_method (lm_cConnection, "server=", conn_set_server, 1); + rb_define_method (lm_cConnection, "jid", conn_get_jid, 0); + rb_define_method (lm_cConnection, "jid=", conn_set_jid, 1); + rb_define_method (lm_cConnection, "port", conn_get_port, 0); + rb_define_method (lm_cConnection, "port=", conn_set_port, 1); + + rb_define_method (lm_cConnection, "ssl", conn_get_ssl, 0); + rb_define_method (lm_cConnection, "ssl=", conn_set_ssl, 1); + rb_define_method (lm_cConnection, "proxy", conn_get_proxy, 0); + rb_define_method (lm_cConnection, "proxy=", conn_set_proxy, 1); + + /* 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_with_reply", conn_send_with_reply, -1); + rb_define_method (lm_cConnection, "send_raw", conn_send_raw, 1); + */ + + rb_define_method (lm_cConnection, "state", conn_get_state, 0); + rb_define_method (lm_cConnection, "add_message_handler", conn_add_msg_handler, -1); +} diff -r 95287bd6f233 -r 8623ce9ef39d bindings/ruby/src/rblm-constants.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bindings/ruby/src/rblm-constants.c Thu Apr 10 21:30:17 2008 +0200 @@ -0,0 +1,266 @@ +#include "rblm.h" + +VALUE lm_mMessageType; +VALUE lm_mMessageSubType; +VALUE lm_mDisconnectReason; +VALUE lm_mConnectionState; +VALUE lm_mProxyType; +VALUE lm_mCertificateStatus; +VALUE lm_mSSLStatus; +VALUE lm_mSSLResponse; + +LmConnectionState +rb_lm_connection_state_from_ruby_object (VALUE obj) +{ + LmConnectionState state; + + state = FIX2INT (obj); + if (state < LM_CONNECTION_STATE_CLOSED || + state > LM_CONNECTION_STATE_AUTHENTICATED) { + rb_raise (rb_eArgError, + "invalid LmConnectionState: %d (expected %d <= LmConnectionState <= %d)", + state, LM_CONNECTION_STATE_CLOSED, + LM_CONNECTION_STATE_AUTHENTICATED); + } + + return state; +} + +LmDisconnectReason +rb_lm_disconnect_reason_from_ruby_object (VALUE obj) +{ + LmDisconnectReason reason; + + reason = FIX2INT (obj); + if (reason < LM_DISCONNECT_REASON_OK || + reason > LM_DISCONNECT_REASON_UNKNOWN) { + rb_raise (rb_eArgError, + "invalid LmDisconnectReason: %d (expected %d <= LmDisconnectReason <= %d)", + reason, + LM_DISCONNECT_REASON_OK, + LM_DISCONNECT_REASON_UNKNOWN); + } + + return reason; +} + +LmMessageType +rb_lm_message_type_from_ruby_object (VALUE obj) +{ + LmMessageType type; + + type = FIX2INT (obj); + if (type < LM_MESSAGE_TYPE_MESSAGE || + type > LM_MESSAGE_TYPE_IQ) { + rb_raise (rb_eArgError, + "invalid LmMessageType: %d (expected %d <= LmMessageType <= %d)", + type, LM_MESSAGE_TYPE_MESSAGE, + LM_MESSAGE_TYPE_IQ); + } + + return type; +} + +LmMessageSubType +rb_lm_message_sub_type_from_ruby_object (VALUE obj) +{ + LmMessageSubType type; + + type = FIX2INT (obj); + if (type < LM_MESSAGE_SUB_TYPE_AVAILABLE || + type > LM_MESSAGE_SUB_TYPE_ERROR) { + rb_raise (rb_eArgError, + "invalid LmMessageSubType: %d (expected %d <= LmMessageSubType <= %d)", + type, LM_MESSAGE_SUB_TYPE_AVAILABLE, + LM_MESSAGE_SUB_TYPE_ERROR); + } + + return type; +} + +LmProxyType +rb_lm_proxy_type_from_ruby_object (VALUE obj) +{ + LmProxyType type; + + type = FIX2INT (obj); + if (type < LM_PROXY_TYPE_NONE || type > LM_PROXY_TYPE_HTTP) { + rb_raise (rb_eArgError, + "invalid LmProxyType: %d (expected %d <= LmProxyType <= %d)", + type, LM_PROXY_TYPE_NONE, LM_PROXY_TYPE_HTTP); + } + + return type; +} + +LmCertificateStatus +rb_lm_certificate_status_from_ruby_object (VALUE obj) +{ + LmCertificateStatus status; + + status = FIX2INT (obj); + if (status < LM_CERT_INVALID || status > LM_CERT_REVOKED) { + rb_raise (rb_eArgError, + "invalid LmCertificateStatus: %d (expected %d <= LmCertificateStatus <= %d)", + status, LM_CERT_INVALID, LM_CERT_REVOKED); + } + + return status; +} + +LmSSLStatus +rb_lm_ssl_status_from_ruby_object (VALUE obj) +{ + LmSSLStatus status; + + status = FIX2INT (obj); + if (status < LM_SSL_STATUS_NO_CERT_FOUND || + status > LM_SSL_STATUS_GENERIC_ERROR) { + rb_raise (rb_eArgError, + "invalid LmSSLStatus: %d (expected %d <= LmSSLStatus <= %d)", + status, LM_SSL_STATUS_NO_CERT_FOUND, + LM_SSL_STATUS_GENERIC_ERROR); + } + + return status; +} + +LmSSLResponse +rb_lm_ssl_response_from_ruby_object (VALUE obj) +{ + LmSSLResponse response; + + response = FIX2INT (obj); + if (response < LM_SSL_RESPONSE_CONTINUE || + response > LM_SSL_RESPONSE_STOP) { + rb_raise (rb_eArgError, + "invalid LmSSLResponse: %d (expected %d <= LmSSLResponse <= %d)", + response, + LM_SSL_RESPONSE_CONTINUE, LM_SSL_RESPONSE_STOP); + } + + return response; +} + +void +Init_lm_constants (VALUE lm_mLM) +{ + /* LmMessageType */ + lm_mMessageType = rb_define_module_under (lm_mLM, "MessageType"); + + rb_define_const (lm_mMessageType, "MESSAGE", + INT2FIX (LM_MESSAGE_TYPE_MESSAGE)); + rb_define_const (lm_mMessageType, "PRESENCE", + INT2FIX (LM_MESSAGE_TYPE_PRESENCE)); + rb_define_const (lm_mMessageType, "IQ", + INT2FIX (LM_MESSAGE_TYPE_IQ)); + + /* LmMessageSubType */ + lm_mMessageSubType = rb_define_module_under (lm_mLM, "MessageSubType"); + + rb_define_const (lm_mMessageSubType, "AVAILABLE", + INT2FIX (LM_MESSAGE_SUB_TYPE_AVAILABLE)); + rb_define_const (lm_mMessageSubType, "NORMAL", + INT2FIX (LM_MESSAGE_SUB_TYPE_NORMAL)); + rb_define_const (lm_mMessageSubType, "CHAT", + INT2FIX (LM_MESSAGE_SUB_TYPE_CHAT)); + rb_define_const (lm_mMessageSubType, "GROUPCHAT", + INT2FIX (LM_MESSAGE_SUB_TYPE_GROUPCHAT)); + rb_define_const (lm_mMessageSubType, "HEADLINE", + INT2FIX (LM_MESSAGE_SUB_TYPE_HEADLINE)); + rb_define_const (lm_mMessageSubType, "UNAVAILABLE", + INT2FIX (LM_MESSAGE_SUB_TYPE_UNAVAILABLE)); + rb_define_const (lm_mMessageSubType, "PROBE", + INT2FIX (LM_MESSAGE_SUB_TYPE_PROBE)); + rb_define_const (lm_mMessageSubType, "SUBSCRIBE", + INT2FIX (LM_MESSAGE_SUB_TYPE_SUBSCRIBE)); + rb_define_const (lm_mMessageSubType, "UNSUBSCRIBE", + INT2FIX (LM_MESSAGE_SUB_TYPE_UNSUBSCRIBE)); + rb_define_const (lm_mMessageSubType, "SUBSCRIBED", + INT2FIX (LM_MESSAGE_SUB_TYPE_SUBSCRIBED)); + rb_define_const (lm_mMessageSubType, "UNSUBSCRIBED", + INT2FIX (LM_MESSAGE_SUB_TYPE_UNSUBSCRIBED)); + rb_define_const (lm_mMessageSubType, "GET", + INT2FIX (LM_MESSAGE_SUB_TYPE_GET)); + rb_define_const (lm_mMessageSubType, "SET", + INT2FIX (LM_MESSAGE_SUB_TYPE_SET)); + rb_define_const (lm_mMessageSubType, "RESULT", + INT2FIX (LM_MESSAGE_SUB_TYPE_RESULT)); + rb_define_const (lm_mMessageSubType, "ERROR", + INT2FIX (LM_MESSAGE_SUB_TYPE_ERROR)); + + /* LmDisconnectReason */ + lm_mDisconnectReason = rb_define_module_under (lm_mLM, "DisconnectReason"); + + rb_define_const (lm_mDisconnectReason, "OK", + INT2FIX (LM_DISCONNECT_REASON_OK)); + rb_define_const (lm_mDisconnectReason, "PING_TIME_OUT", + INT2FIX (LM_DISCONNECT_REASON_PING_TIME_OUT)); + rb_define_const (lm_mDisconnectReason, "HUP", + INT2FIX (LM_DISCONNECT_REASON_HUP)); + rb_define_const (lm_mDisconnectReason, "ERROR", + INT2FIX (LM_DISCONNECT_REASON_ERROR)); + rb_define_const (lm_mDisconnectReason, "RESOURCE_CONFLICT", + INT2FIX (LM_DISCONNECT_REASON_RESOURCE_CONFLICT)); + rb_define_const (lm_mDisconnectReason, "INVALID_XML", + INT2FIX (LM_DISCONNECT_REASON_INVALID_XML)); + rb_define_const (lm_mDisconnectReason, "UNKNOWN", + INT2FIX (LM_DISCONNECT_REASON_UNKNOWN)); + + /* LmConnectionState */ + lm_mConnectionState = rb_define_module_under (lm_mLM, "ConnectionState"); + rb_define_const (lm_mConnectionState, "CLOSED", + INT2FIX (LM_CONNECTION_STATE_CLOSED)); + rb_define_const (lm_mConnectionState, "OPENING", + INT2FIX (LM_CONNECTION_STATE_OPENING)); + rb_define_const (lm_mConnectionState, "OPEN", + INT2FIX (LM_CONNECTION_STATE_OPEN)); + rb_define_const (lm_mConnectionState, "AUTHENTICATING", + INT2FIX (LM_CONNECTION_STATE_AUTHENTICATING)); + rb_define_const (lm_mConnectionState, "AUTHENTICATED", + INT2FIX (LM_CONNECTION_STATE_AUTHENTICATED)); + + /* LmProxyType */ + lm_mProxyType = rb_define_module_under (lm_mLM, "ProxyType"); + + rb_define_const (lm_mProxyType, "NONE", + INT2FIX (LM_PROXY_TYPE_NONE)); + rb_define_const (lm_mProxyType, "HTTP", + INT2FIX (LM_PROXY_TYPE_HTTP)); + + /* LmCertificateStatus */ + lm_mCertificateStatus = rb_define_module_under (lm_mLM, + "CertificateStatus"); + rb_define_const (lm_mCertificateStatus, "INVALID", + INT2FIX (LM_CERT_INVALID)); + rb_define_const (lm_mCertificateStatus, "ISSUER_NOT_FOUND", + INT2FIX (LM_CERT_ISSUER_NOT_FOUND)); + rb_define_const (lm_mCertificateStatus, "REVOKED", + INT2FIX (LM_CERT_REVOKED)); + + /* LmSSLStatus */ + lm_mSSLStatus = rb_define_module_under (lm_mLM, "SSLStatus"); + + rb_define_const (lm_mSSLStatus, "NO_CERT_FOUND", + INT2FIX (LM_SSL_STATUS_NO_CERT_FOUND)); + rb_define_const (lm_mSSLStatus, "UNTRUSTED_CERT", + INT2FIX (LM_SSL_STATUS_UNTRUSTED_CERT)); + rb_define_const (lm_mSSLStatus, "CERT_EXPIRED", + INT2FIX (LM_SSL_STATUS_CERT_EXPIRED)); + rb_define_const (lm_mSSLStatus, "CERT_NOT_ACTIVATED", + INT2FIX (LM_SSL_STATUS_CERT_NOT_ACTIVATED)); + rb_define_const (lm_mSSLStatus, "CERT_HOSTNAME_MISMATCH", + INT2FIX (LM_SSL_STATUS_CERT_HOSTNAME_MISMATCH)); + rb_define_const (lm_mSSLStatus, "CERT_FINGERPRINT_MISMATCH", + INT2FIX (LM_SSL_STATUS_CERT_FINGERPRINT_MISMATCH)); + rb_define_const (lm_mSSLStatus, "GENERIC_ERROR", + INT2FIX (LM_SSL_STATUS_GENERIC_ERROR)); + + /* LmSSLResponse */ + lm_mSSLResponse = rb_define_module_under (lm_mLM, "SSLResponse"); + + rb_define_const (lm_mSSLResponse, "CONTINUE", + INT2FIX (LM_SSL_RESPONSE_CONTINUE)); + rb_define_const (lm_mSSLResponse, "STOP", + INT2FIX (LM_SSL_RESPONSE_STOP)); +} diff -r 95287bd6f233 -r 8623ce9ef39d bindings/ruby/src/rblm-message-node.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bindings/ruby/src/rblm-message-node.c Thu Apr 10 21:30:17 2008 +0200 @@ -0,0 +1,240 @@ +#include +#include + +VALUE lm_cMessageNode; + +LmMessageNode * +rb_lm_message_node_from_ruby_object (VALUE obj) +{ + LmMessageNode *node; + + if (!rb_lm__is_kind_of (obj, lm_cMessageNode)) { + rb_raise (rb_eTypeError, "not a LmMessageNode"); + } + + Data_Get_Struct (obj, LmMessageNode, node); + + return node; +} + +void +msg_node_free (LmMessageNode *node) +{ + lm_message_node_unref (node); +} + +VALUE +rb_lm_message_node_to_ruby_object (LmMessageNode *node) +{ + if (node) { + lm_message_node_ref (node); + return Data_Wrap_Struct (lm_cMessageNode, NULL, + msg_node_free, node); + } else { + return Qnil; + } +} + +VALUE +msg_node_allocate (VALUE klass) +{ + return Data_Wrap_Struct (klass, NULL, msg_node_free, NULL); +} + +VALUE +msg_node_get_name (VALUE self) +{ + LmMessageNode *node = rb_lm_message_node_from_ruby_object (self); + + return rb_str_new2 (node->name); +} + +VALUE +msg_node_get_value (VALUE self) +{ + LmMessageNode *node = rb_lm_message_node_from_ruby_object (self); + + if (lm_message_node_get_value (node)) { + return rb_str_new2 (lm_message_node_get_value (node)); + } + + return Qnil; +} + +VALUE +msg_node_set_value (VALUE self, VALUE value) +{ + LmMessageNode *node = rb_lm_message_node_from_ruby_object (self); + char *value_str = NULL; + + 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); + } + + lm_message_node_set_value (node, value_str); +} + +VALUE +msg_node_add_child (int argc, VALUE *argv, VALUE self) +{ + LmMessageNode *node = rb_lm_message_node_from_ruby_object (self); + LmMessageNode *child; + VALUE name, value; + char *value_str = NULL; + + rb_scan_args (argc, argv, "11", &name, &value); + + if (!NIL_P (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), + value_str); + + return LMMESSAGENODE2RVAL (child); +} + +VALUE +msg_node_get_attribute (VALUE self, VALUE attr) +{ + LmMessageNode *node = rb_lm_message_node_from_ruby_object (self); + + if (lm_message_node_get_attribute (node, StringValuePtr (attr))) { + return rb_str_new2 (lm_message_node_get_attribute (node, + StringValuePtr (attr))); + } + + return Qnil; +} + +VALUE +msg_node_set_attribute (VALUE self, VALUE attr, VALUE value) +{ + LmMessageNode *node = rb_lm_message_node_from_ruby_object (self); + char *value_str = NULL; + + if (!NIL_P (value)) { + value_str = StringValuePtr (value); + } + + lm_message_node_set_attribute (node, StringValuePtr (attr), value_str); + + return Qnil; +} + +VALUE +msg_node_get_child (VALUE self, VALUE name) +{ + LmMessageNode *node = rb_lm_message_node_from_ruby_object (self); + LmMessageNode *child; + + child = lm_message_node_get_child (node, StringValuePtr (name)); + + return LMMESSAGENODE2RVAL (child); +} + +VALUE +msg_node_find_child (VALUE self, VALUE name) +{ + LmMessageNode *node = rb_lm_message_node_from_ruby_object (self); + LmMessageNode *child; + + child = lm_message_node_find_child (node, StringValuePtr (name)); + + return LMMESSAGENODE2RVAL (child); +} + +VALUE +msg_node_get_is_raw_mode (VALUE self) +{ + LmMessageNode *node = rb_lm_message_node_from_ruby_object (self); + + return GBOOL2RVAL (lm_message_node_get_raw_mode (node)); +} + +VALUE +msg_node_set_is_raw_mode (VALUE self, VALUE raw_mode) +{ + LmMessageNode *node = rb_lm_message_node_from_ruby_object (self); + + lm_message_node_set_raw_mode (node, RVAL2GBOOL (raw_mode)); + + return Qnil; +} + +VALUE +msg_node_to_string (VALUE self) +{ + LmMessageNode *node = rb_lm_message_node_from_ruby_object (self); + + return rb_str_new2 (lm_message_node_to_string (node)); +} + +VALUE +msg_node_get_next (VALUE self) +{ + LmMessageNode *node = rb_lm_message_node_from_ruby_object (self); + + return LMMESSAGENODE2RVAL (node->next); +} + +VALUE +msg_node_get_prev (VALUE self) +{ + LmMessageNode *node = rb_lm_message_node_from_ruby_object (self); + + return LMMESSAGENODE2RVAL (node->prev); +} + +VALUE +msg_node_get_parent (VALUE self) +{ + LmMessageNode *node = rb_lm_message_node_from_ruby_object (self); + + return LMMESSAGENODE2RVAL (node->parent); +} + +VALUE +msg_node_get_children (VALUE self) +{ + LmMessageNode *node = rb_lm_message_node_from_ruby_object (self); + + return LMMESSAGENODE2RVAL (node->children); +} + +extern void +Init_lm_message_node (VALUE lm_mLM) +{ + lm_cMessageNode = rb_define_class_under (lm_mLM, "MessageNode", + rb_cObject); + + rb_define_alloc_func (lm_cMessageNode, msg_node_allocate); + + rb_define_method (lm_cMessageNode, "name", msg_node_get_name, 0); + rb_define_method (lm_cMessageNode, "value", msg_node_get_value, 0); + rb_define_method (lm_cMessageNode, "value=", msg_node_set_value, 1); + + rb_define_method (lm_cMessageNode, "add_child", msg_node_add_child, -1); + rb_define_method (lm_cMessageNode, "get_attribute", msg_node_get_attribute, 1); + rb_define_method (lm_cMessageNode, "set_attribute", msg_node_set_attribute, 2); + rb_define_method (lm_cMessageNode, "get_child", msg_node_get_child, 1); + rb_define_method (lm_cMessageNode, "find_child", msg_node_find_child, 1); + + rb_define_method (lm_cMessageNode, "raw_mode", msg_node_get_is_raw_mode, 0); + rb_define_method (lm_cMessageNode, "raw_mode=", msg_node_set_is_raw_mode, 1); + + rb_define_method (lm_cMessageNode, "to_s", msg_node_to_string, 0); + + rb_define_method (lm_cMessageNode, "next", msg_node_get_next, 0); + rb_define_method (lm_cMessageNode, "prev", msg_node_get_prev, 0); + rb_define_method (lm_cMessageNode, "parent", msg_node_get_parent, 0); + rb_define_method (lm_cMessageNode, "children", msg_node_get_children, 0); +} diff -r 95287bd6f233 -r 8623ce9ef39d bindings/ruby/src/rblm-message.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bindings/ruby/src/rblm-message.c Thu Apr 10 21:30:17 2008 +0200 @@ -0,0 +1,117 @@ +#include "rblm.h" +#include "rblm-private.h" + +/* How to handle type, sub_type and root node*/ + +VALUE lm_cMessage; + +LmMessage * +rb_lm_message_from_ruby_object (VALUE obj) +{ + LmMessage *m; + + if (!rb_lm__is_kind_of (obj, lm_cMessage)) { + rb_raise (rb_eTypeError, "not a LmMessage"); + } + + Data_Get_Struct (obj, LmMessage, m); + + return m; +} + +void +msg_free (LmMessage *m) +{ + lm_message_unref (m); +} + +VALUE +rb_lm_message_to_ruby_object (LmMessage *m) +{ + if (m) { + lm_message_ref (m); + return Data_Wrap_Struct (lm_cMessage, NULL, + msg_free, m); + } else { + return Qnil; + } +} + +VALUE +msg_allocate (VALUE klass) +{ + return Data_Wrap_Struct (klass, NULL, msg_free, NULL); +} + +VALUE +msg_initialize (int argc, VALUE *argv, VALUE self) +{ + LmMessage *m; + VALUE to, type, sub_type; + char *to_str = NULL; + + rb_scan_args (argc, argv, "21", &to, &type, &sub_type); + + /* To can be nil */ + if (!NIL_P (to)) { + if (!rb_respond_to (to, rb_intern ("to_s"))) { + rb_raise (rb_eArgError, "to should respond to to_s"); + } else { + VALUE str_val = rb_funcall (to, rb_intern ("to_s"), 0); + to_str = StringValuePtr (str_val); + } + } + + if (NIL_P (sub_type)) { + /* Without sub_type */ + m = lm_message_new (to_str, FIX2INT (type)); + } else { + m = lm_message_new_with_sub_type (to_str, + FIX2INT (type), + FIX2INT (sub_type)); + } + + DATA_PTR (self) = m; + + return self; +} + +VALUE +msg_get_type (VALUE self) +{ + LmMessage *m = rb_lm_message_from_ruby_object (self); + + return INT2FIX (lm_message_get_type (m)); +} + +VALUE +msg_get_sub_type (VALUE self) +{ + LmMessage *m = rb_lm_message_from_ruby_object (self); + + return INT2FIX (lm_message_get_sub_type (m)); +} + +VALUE +msg_get_root_node (VALUE self) +{ + LmMessage *m = rb_lm_message_from_ruby_object (self); + + return LMMESSAGENODE2RVAL (m->node); +} + +extern void +Init_lm_message (VALUE lm_mLM) +{ + lm_cMessage = rb_define_class_under (lm_mLM, "Message", rb_cObject); + + rb_define_alloc_func (lm_cMessage, msg_allocate); + + rb_define_method (lm_cMessage, "initialize", msg_initialize, -1); + 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"); +} + diff -r 95287bd6f233 -r 8623ce9ef39d bindings/ruby/src/rblm-private.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bindings/ruby/src/rblm-private.c Thu Apr 10 21:30:17 2008 +0200 @@ -0,0 +1,8 @@ +#include "rblm-private.h" + +gboolean +rb_lm__is_kind_of (VALUE object, VALUE klass) +{ + return RVAL2GBOOL (rb_obj_is_kind_of (object, klass)); +} + diff -r 95287bd6f233 -r 8623ce9ef39d bindings/ruby/src/rblm-private.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bindings/ruby/src/rblm-private.h Thu Apr 10 21:30:17 2008 +0200 @@ -0,0 +1,40 @@ + +#ifndef __RBLM_PRIVATE_H__ +#define __RBLM_PRIVATE_H__ + +#include +#include +#include + +#define GBOOL2RVAL(x) (x == TRUE ? Qtrue : Qfalse) +#define RVAL2GBOOL(x) RTEST(x) + +#define LMMESSAGENODE2RVAL(x) (rb_lm_message_node_to_ruby_object(x)) +#define LMSSL2RVAL(x) (rb_lm_ssl_to_ruby_object(x)) +#define LMPROXY2RVAL(x) (rb_lm_proxy_to_ruby_object(x)) +#define LMMESSAGE2RVAL(x) (rb_lm_message_to_ruby_object(x)) + +gboolean rb_lm__is_kind_of (VALUE object, VALUE klass); + +VALUE rb_lm_message_to_ruby_object (LmMessage *m); +VALUE rb_lm_message_node_to_ruby_object (LmMessageNode *node); +VALUE rb_lm_ssl_to_ruby_object (LmSSL *ssl); +VALUE rb_lm_proxy_to_ruby_object (LmProxy *proxy); + +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); +LmMessageSubType rb_lm_message_sub_type_from_ruby_object (VALUE obj); +LmProxyType rb_lm_proxy_type_from_ruby_object (VALUE obj); +LmCertificateStatus rb_lm_certificate_status_from_ruby_object (VALUE obj); +LmSSLStatus rb_lm_ssl_status_from_ruby_object (VALUE obj); +LmSSLResponse rb_lm_ssl_response_from_ruby_object (VALUE obj); + +#endif /* __RBLM_PRIVATE_H__ */ + diff -r 95287bd6f233 -r 8623ce9ef39d bindings/ruby/src/rblm-proxy.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bindings/ruby/src/rblm-proxy.c Thu Apr 10 21:30:17 2008 +0200 @@ -0,0 +1,210 @@ +#include "rblm.h" + +VALUE lm_cProxy; + +LmProxy * +rb_lm_proxy_from_ruby_object (VALUE obj) +{ + LmProxy *proxy; + + if (!rb_lm__is_kind_of (obj, lm_cProxy)) { + rb_raise (rb_eTypeError, "not a LmProxy"); + } + + Data_Get_Struct (obj, LmProxy, proxy); + + return proxy; +} + +void +proxy_free (LmProxy *proxy) +{ + lm_proxy_unref (proxy); +} + +VALUE +rb_lm_proxy_to_ruby_object (LmProxy *proxy) +{ + if (proxy) { + lm_proxy_ref (proxy); + return Data_Wrap_Struct (lm_cProxy, NULL, + proxy_free, proxy); + } else { + return Qnil; + } +} +VALUE +proxy_allocate (VALUE klass) +{ + return Data_Wrap_Struct (klass, NULL, proxy_free, NULL); +} + +VALUE +proxy_initialize (int argc, VALUE *argv, VALUE self) +{ + LmProxy *proxy; + VALUE type, server, port; + char *server_str = NULL; + + rb_scan_args (argc, argv, "12", &type, &server, &port); + + proxy = lm_proxy_new (FIX2INT (type)); + + if (!NIL_P (server)) { + if (!rb_respond_to (server, rb_intern ("to_s"))) { + rb_raise (rb_eArgError, "server should respond to to_s"); + } else { + VALUE str_val = rb_funcall (server, rb_intern ("to_s"), 0); + lm_proxy_set_server (proxy, StringValuePtr (str_val)); + } + } + + if (!NIL_P (port)) { + lm_proxy_set_port (proxy, NUM2UINT (port)); + } + + DATA_PTR (self) = proxy; + + return self; +} + +VALUE +proxy_get_type (VALUE self) +{ + LmProxy *proxy = rb_lm_proxy_from_ruby_object (self); + + return INT2FIX (lm_proxy_get_type (proxy)); +} + +VALUE +proxy_set_type (VALUE self, VALUE type) +{ + LmProxy *proxy = rb_lm_proxy_from_ruby_object (self); + + lm_proxy_set_type (proxy, FIX2INT (type)); + + return Qnil; +} + +VALUE +proxy_get_server (VALUE self) +{ + LmProxy *proxy = rb_lm_proxy_from_ruby_object (self); + + if (lm_proxy_get_server (proxy)) { + return rb_str_new2 (lm_proxy_get_server (proxy)); + } + + return Qnil; +} + +VALUE +proxy_set_server (VALUE self, VALUE server) +{ + LmProxy *proxy = rb_lm_proxy_from_ruby_object (self); + VALUE str_val; + + if (!rb_respond_to (server, rb_intern ("to_s"))) { + rb_raise (rb_eArgError, "server should respond to to_s"); + } + + str_val = rb_funcall (server, rb_intern ("to_s"), 0); + lm_proxy_set_server (proxy, StringValuePtr (str_val)); + + return Qnil; +} + +VALUE +proxy_get_port (VALUE self) +{ + LmProxy *proxy = rb_lm_proxy_from_ruby_object (self); + + return UINT2NUM (lm_proxy_get_port (proxy)); +} + +VALUE +proxy_set_port (VALUE self, VALUE port) +{ + LmProxy *proxy = rb_lm_proxy_from_ruby_object (self); + + lm_proxy_set_port (proxy, NUM2UINT (port)); + + return Qnil; +} + +VALUE +proxy_get_username (VALUE self) +{ + LmProxy *proxy = rb_lm_proxy_from_ruby_object (self); + + if (lm_proxy_get_username (proxy)) { + return rb_str_new2 (lm_proxy_get_username (proxy)); + } + + return Qnil; +} + +VALUE +proxy_set_username (VALUE self, VALUE username) +{ + LmProxy *proxy = rb_lm_proxy_from_ruby_object (self); + VALUE str_val; + + if (!rb_respond_to (username, rb_intern ("to_s"))) { + rb_raise (rb_eArgError, "username should respond to to_s"); + } + + str_val = rb_funcall (username, rb_intern ("to_s"), 0); + lm_proxy_set_username (proxy, StringValuePtr (str_val)); + + return Qnil; +} + +VALUE +proxy_get_password (VALUE self) +{ + LmProxy *proxy = rb_lm_proxy_from_ruby_object (self); + + if (lm_proxy_get_password (proxy)) { + return rb_str_new2 (lm_proxy_get_password (proxy)); + } + + return Qnil; +} + +VALUE +proxy_set_password (VALUE self, VALUE password) +{ + LmProxy *proxy = rb_lm_proxy_from_ruby_object (self); + VALUE str_val; + + if (!rb_respond_to (password, rb_intern ("to_s"))) { + rb_raise (rb_eArgError, "password should respond to to_s"); + } + + str_val = rb_funcall (password, rb_intern ("to_s"), 0); + lm_proxy_set_password (proxy, StringValuePtr (str_val)); + + return Qnil; +} + +extern void +Init_lm_proxy (VALUE lm_mLM) +{ + lm_cProxy = rb_define_class_under (lm_mLM, "Proxy", rb_cObject); + + rb_define_alloc_func (lm_cProxy, proxy_allocate); + + rb_define_method (lm_cProxy, "initialize", proxy_initialize, -1); + rb_define_method (lm_cProxy, "type", proxy_get_type, 0); + rb_define_method (lm_cProxy, "type=", proxy_set_type, 1); + rb_define_method (lm_cProxy, "server", proxy_get_server, 0); + rb_define_method (lm_cProxy, "server=", proxy_set_server, 1); + rb_define_method (lm_cProxy, "port", proxy_get_port, 0); + rb_define_method (lm_cProxy, "port=", proxy_set_port, 1); + rb_define_method (lm_cProxy, "username", proxy_get_username, 0); + rb_define_method (lm_cProxy, "username=", proxy_set_username, 1); + rb_define_method (lm_cProxy, "password", proxy_get_password, 0); + rb_define_method (lm_cProxy, "password=", proxy_set_password, 1); +} + diff -r 95287bd6f233 -r 8623ce9ef39d bindings/ruby/src/rblm-ssl.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bindings/ruby/src/rblm-ssl.c Thu Apr 10 21:30:17 2008 +0200 @@ -0,0 +1,171 @@ +#include "rblm.h" +#include "rblm-private.h" + +VALUE lm_cSSL; + +LmSSL * +rb_lm_ssl_from_ruby_object (VALUE obj) +{ + LmSSL *ssl; + + if (!rb_lm__is_kind_of (obj, lm_cSSL)) { + rb_raise (rb_eTypeError, "not a LmSSL"); + } + + Data_Get_Struct (obj, LmSSL, ssl); + + return ssl; +} + +void +ssl_free (LmSSL *ssl) +{ + lm_ssl_unref (ssl); +} + +VALUE +rb_lm_ssl_to_ruby_object (LmSSL *ssl) +{ + if (ssl) { + lm_ssl_ref (ssl); + return Data_Wrap_Struct (lm_cSSL, NULL, + ssl_free, ssl); + } else { + return Qnil; + } +} + +VALUE +ssl_allocate (VALUE klass) +{ + return Data_Wrap_Struct (klass, NULL, ssl_free, NULL); +} + +static VALUE +ssl_is_supported (VALUE self) +{ + return GBOOL2RVAL (lm_ssl_is_supported ()); +} + +static LmSSLResponse +ssl_func_callback (LmSSL *ssl, + LmSSLStatus status, + gpointer user_data) +{ + VALUE response; + + if (!user_data) { + return LM_SSL_RESPONSE_CONTINUE; + } + + response = rb_funcall ((VALUE)user_data, rb_intern ("call"), 1, + INT2FIX (status)); + + return rb_lm_ssl_response_from_ruby_object (response); +} + +static VALUE +ssl_initialize (int argc, VALUE *argv, VALUE self) +{ + LmSSL *ssl; + VALUE fingerprint; + VALUE func; + char *fingerprint_str = NULL; + gpointer func_ptr = NULL; + + rb_scan_args (argc, argv, "01&", &fingerprint, &func); + + if (!NIL_P (func)) { + func_ptr = (gpointer) func; + } + + if (!NIL_P (fingerprint)) { + VALUE str_val; + + if (!rb_respond_to (fingerprint, rb_intern ("to_s"))) { + rb_raise (rb_eArgError, + "fingerprint should respond to to_s"); + } + + str_val = rb_funcall (fingerprint, rb_intern ("to_s"), 0); + fingerprint_str = StringValuePtr (str_val); + } + + ssl = lm_ssl_new (fingerprint_str, ssl_func_callback, + func_ptr, NULL); + + DATA_PTR (self) = ssl; + + return self; +} + +static VALUE +ssl_get_fingerprint (VALUE self) +{ + LmSSL *ssl = rb_lm_ssl_from_ruby_object (self); + + if (lm_ssl_get_fingerprint (ssl)) { + return rb_str_new2 (lm_ssl_get_fingerprint (ssl)); + } + + return Qnil; +} + +static VALUE +ssl_get_use_starttls (VALUE self) +{ + LmSSL *ssl = rb_lm_ssl_from_ruby_object (self); + + return GBOOL2RVAL (lm_ssl_get_use_starttls (ssl)); +} + +static VALUE +ssl_set_use_starttls (VALUE self, VALUE use) +{ + LmSSL *ssl = rb_lm_ssl_from_ruby_object (self); + + lm_ssl_use_starttls (ssl, + RVAL2GBOOL (use), + lm_ssl_get_require_starttls (ssl)); + + return Qnil; +} + +static VALUE +ssl_get_require_starttls (VALUE self) +{ + LmSSL *ssl = rb_lm_ssl_from_ruby_object (self); + + return GBOOL2RVAL (lm_ssl_get_require_starttls (ssl)); +} + +static VALUE +ssl_set_require_starttls (VALUE self, VALUE require) +{ + LmSSL *ssl = rb_lm_ssl_from_ruby_object (self); + + lm_ssl_use_starttls (ssl, + lm_ssl_get_use_starttls (ssl), + RVAL2GBOOL (require)); + + return Qnil; +} + +extern void +Init_lm_ssl (VALUE lm_mLM) +{ + lm_cSSL = rb_define_class_under (lm_mLM, "SSL", rb_cObject); + + rb_define_alloc_func (lm_cSSL, ssl_allocate); + + rb_define_singleton_method (lm_cSSL, "supported?", + ssl_is_supported, 0); + + rb_define_method (lm_cSSL, "initialize", ssl_initialize, -1); + rb_define_method (lm_cSSL, "fingerprint", ssl_get_fingerprint, 0); + rb_define_method (lm_cSSL, "use_starttls", ssl_get_use_starttls, 0); + rb_define_method (lm_cSSL, "use_starttls=", ssl_set_use_starttls, 1); + rb_define_method (lm_cSSL, "require_starttls", ssl_get_require_starttls, 0); + rb_define_method (lm_cSSL, "require_starttls=", ssl_set_require_starttls, 1); +} + diff -r 95287bd6f233 -r 8623ce9ef39d bindings/ruby/src/rblm.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bindings/ruby/src/rblm.c Thu Apr 10 21:30:17 2008 +0200 @@ -0,0 +1,17 @@ +#include "rblm.h" + +void +Init_loudmouth (void) +{ + VALUE lm_mLM; + + lm_mLM = rb_define_module ("LM"); + + Init_lm_connection (lm_mLM); + Init_lm_message (lm_mLM); + Init_lm_message_node (lm_mLM); + Init_lm_constants (lm_mLM); + Init_lm_ssl (lm_mLM); + Init_lm_proxy (lm_mLM); +} + diff -r 95287bd6f233 -r 8623ce9ef39d bindings/ruby/src/rblm.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bindings/ruby/src/rblm.h Thu Apr 10 21:30:17 2008 +0200 @@ -0,0 +1,17 @@ +#ifndef __RLM_H__ +#define __RLM_H__ + +#include +#include +#include + +extern void Init_loudmouth (void); +extern void Init_lm_connection (VALUE lm_mLM); +extern void Init_lm_message (VALUE lm_mLM); +extern void Init_lm_message_node (VALUE lm_mLM); +extern void Init_lm_constants (VALUE lm_mLM); +extern void Init_lm_ssl (VALUE lm_mLM); +extern void Init_lm_proxy (VALUE lm_mLM); + +#endif /* __RLM_H__ */ +