--- a/python/loudmouth.pyx Fri Jan 05 11:01:46 2007 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,484 +0,0 @@
-# -*- Mode: Python -*-
-
-cdef extern from "Python.h":
- ctypedef struct PyObject
- void Py_INCREF (object)
- void Py_DECREF (object)
- void Py_XINCREF (object)
- void Py_XDECREF (object)
-
-cdef extern from "glib/gerror.h":
- ctypedef struct GError:
- int quark
- int domain
- char* message
-
-cdef extern from "stdlib.h":
- cdef void *malloc(int size)
- cdef void free(void *ptr)
-
-cdef extern from "glib/gtypes.h":
- ctypedef struct GDestroyNotify
- ctypedef struct gboolean
-
-cdef extern from "loudmouth/loudmouth.h":
- ctypedef enum LmMessageType:
- LM_MESSAGE_TYPE_MESSAGE
- LM_MESSAGE_TYPE_PRESENCE
- LM_MESSAGE_TYPE_IQ
- LM_MESSAGE_TYPE_STREAM
- LM_MESSAGE_TYPE_STREAM_ERROR
- LM_MESSAGE_TYPE_UNKNOWN
-
- ctypedef enum LmMessageSubType:
- LM_MESSAGE_SUB_TYPE_NOT_SET
- LM_MESSAGE_SUB_TYPE_AVAILABLE
- LM_MESSAGE_SUB_TYPE_NORMAL
- LM_MESSAGE_SUB_TYPE_CHAT
- LM_MESSAGE_SUB_TYPE_GROUPCHAT
- LM_MESSAGE_SUB_TYPE_HEADLINE
- LM_MESSAGE_SUB_TYPE_UNAVAILABLE
- LM_MESSAGE_SUB_TYPE_PROBE
- LM_MESSAGE_SUB_TYPE_SUBSCRIBE
- LM_MESSAGE_SUB_TYPE_UNSUBSCRIBE
- LM_MESSAGE_SUB_TYPE_SUBSCRIBED
- LM_MESSAGE_SUB_TYPE_UNSUBSCRIBED
- LM_MESSAGE_SUB_TYPE_GET
- LM_MESSAGE_SUB_TYPE_SET
- LM_MESSAGE_SUB_TYPE_RESULT
- LM_MESSAGE_SUB_TYPE_ERROR
-
- ctypedef enum LmHandlerResult:
- LM_HANDLER_RESULT_REMOVE_MESSAGE
- LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS
-
- ctypedef enum LmHandlerPriority:
- LM_HANDLER_PRIORITY_LAST
- LM_HANDLER_PRIORITY_NORMAL
- LM_HANDLER_PRIORITY_FIRST
-
- ctypedef enum LmDisconnectReason:
- LM_DISCONNECT_REASON_OK
- LM_DISCONNECT_REASON_PING_TIME_OUT
- LM_DISCONNECT_REASON_HUP
- LM_DISCONNECT_REASON_ERROR
- LM_DISCONNECT_REASON_UNKNOWN
-
- ctypedef enum _LmError:
- LM_ERROR_CONNECTION_NOT_OPEN
- LM_ERROR_CONNECTION_OPEN
- LM_ERROR_AUTH_FAILED
-
- ctypedef struct LmConnection
- ctypedef struct LmMessage
- ctypedef struct LmMessageNode
- ctypedef struct LmMessageHandler
- ctypedef struct LmMessagePriv
-
- ctypedef struct GError
- ctypedef struct GDestroyNotify
-
- ctypedef void (* LmResultFunction) (LmConnection *connection, int success, void* user_data)
- ctypedef void (* LmDisconnectFunction) (LmConnection *connection, LmDisconnectReason reason, void* user_data)
-
- ctypedef LmHandlerResult (* LmHandleMessageFunction) (LmMessageHandler *handler, LmConnection *connection, LmMessage *message, void* user_data)
-
- LmConnection* lm_connection_new (char* server)
- int lm_connection_open (LmConnection* connection, LmResultFunction function, void* user_data, GDestroyNotify notify, GError** error)
- int lm_connection_open_and_block (LmConnection* connection, GError** error)
- int lm_connection_close (LmConnection* connection, GError** error)
- int lm_connection_authenticate (LmConnection* connection, char* username, char* password, char* resource, LmResultFunction function, void* user_data, GDestroyNotify notify, GError** error)
- int lm_connection_authenticate_and_block (LmConnection* connection, char* username, char* password, char* resource, GError** error)
- gboolean lm_connection_is_open (LmConnection* connection)
- gboolean lm_connection_is_authenticated (LmConnection* connection)
- char* lm_connection_get_server (LmConnection* connection)
- void lm_connection_set_server (LmConnection* connection, char* server)
- int lm_connection_get_port (LmConnection* connection)
- void lm_connection_set_port (LmConnection* connection, int port)
- gboolean lm_connection_get_use_ssl (LmConnection* connection)
- void lm_connection_set_use_ssl (LmConnection* connection, int use_ssl)
- int lm_connection_send (LmConnection* connection, LmMessage* message, GError** error)
- int lm_connection_send_with_reply (LmConnection* connection, LmMessage* message, LmMessageHandler* handler, GError** error)
- LmMessage* lm_connection_send_with_reply_and_block (LmConnection* connection, LmMessage* message, GError** error)
- void lm_connection_register_message_handler (LmConnection* connection, LmMessageHandler* handler, LmMessageType type, LmHandlerPriority priority)
- void lm_connection_unregister_message_handler (LmConnection* connection, LmMessageHandler* handler, LmMessageType type)
- void lm_connection_set_disconnect_function (LmConnection* connection, LmDisconnectFunction function, void* user_data, GDestroyNotify notify)
- int lm_connection_send_raw (LmConnection* connection, char* str, GError** error)
- LmConnection* lm_connection_ref (LmConnection* connection)
- void lm_connection_unref (LmConnection* connection)
-
- LmMessage* lm_message_new (char* to, LmMessageType type)
- LmMessage* lm_message_new_with_sub_type (char* to, LmMessageType type, LmMessageSubType sub_type)
- LmMessageType lm_message_get_type (LmMessage* message)
- LmMessageSubType lm_message_get_sub_type (LmMessage* message)
- LmMessageNode* lm_message_get_node (LmMessage* message)
- LmMessage* lm_message_ref (LmMessage* message)
- void lm_message_unref (LmMessage* message)
-
- LmMessageHandler* lm_message_handler_new (LmHandleMessageFunction function, void* user_data, GDestroyNotify notify)
- void lm_message_handler_invalidate (LmMessageHandler* handler)
- int lm_message_handler_is_valid (LmMessageHandler* handler)
- LmMessageHandler* lm_message_handler_ref (LmMessageHandler* handler)
- void lm_message_handler_unref (LmMessageHandler* handler)
-
- char* lm_message_node_get_value (LmMessageNode* node)
- void lm_message_node_set_value (LmMessageNode* node, char* value)
- LmMessageNode* lm_message_node_add_child (LmMessageNode* node, char* name, char* value)
- void lm_message_node_set_attribute (LmMessageNode* node, char* name, char* value)
- char* lm_message_node_get_attribute (LmMessageNode* node, char* name)
- LmMessageNode* lm_message_node_get_child (LmMessageNode* message_node, char* child_name)
- LmMessageNode* lm_message_node_find_child (LmMessageNode* message_node, char* child_name)
- int lm_message_node_get_raw_mode (LmMessageNode* node)
- void lm_message_node_set_raw_mode (LmMessageNode* node, int raw_mode)
- LmMessageNode* lm_message_node_ref (LmMessageNode* node)
- void lm_message_node_unref (LmMessageNode* node)
- char* lm_message_node_to_string (LmMessageNode* node)
-
-class LmError(Exception):
- pass
-
-# Export all enum values
-MESSAGE_TYPE_MESSAGE = LM_MESSAGE_TYPE_MESSAGE
-MESSAGE_TYPE_PRESENCE = LM_MESSAGE_TYPE_PRESENCE
-MESSAGE_TYPE_IQ = LM_MESSAGE_TYPE_IQ
-MESSAGE_TYPE_STREAM = LM_MESSAGE_TYPE_STREAM
-MESSAGE_TYPE_STREAM_ERROR = LM_MESSAGE_TYPE_STREAM_ERROR
-MESSAGE_TYPE_UNKNOWN = LM_MESSAGE_TYPE_UNKNOWN
-
-MESSAGE_SUB_TYPE_NOT_SET = LM_MESSAGE_SUB_TYPE_NOT_SET
-MESSAGE_SUB_TYPE_AVAILABLE = LM_MESSAGE_SUB_TYPE_AVAILABLE
-MESSAGE_SUB_TYPE_NORMAL = LM_MESSAGE_SUB_TYPE_NORMAL
-MESSAGE_SUB_TYPE_CHAT = LM_MESSAGE_SUB_TYPE_CHAT
-MESSAGE_SUB_TYPE_GROUPCHAT = LM_MESSAGE_SUB_TYPE_GROUPCHAT
-MESSAGE_SUB_TYPE_HEADLINE = LM_MESSAGE_SUB_TYPE_HEADLINE
-MESSAGE_SUB_TYPE_UNAVAILABLE = LM_MESSAGE_SUB_TYPE_UNAVAILABLE
-MESSAGE_SUB_TYPE_PROBE = LM_MESSAGE_SUB_TYPE_PROBE
-MESSAGE_SUB_TYPE_SUBSCRIBE = LM_MESSAGE_SUB_TYPE_SUBSCRIBE
-MESSAGE_SUB_TYPE_UNSUBSCRIBE = LM_MESSAGE_SUB_TYPE_UNSUBSCRIBE
-MESSAGE_SUB_TYPE_SUBSCRIBED = LM_MESSAGE_SUB_TYPE_SUBSCRIBED
-MESSAGE_SUB_TYPE_UNSUBSCRIBED = LM_MESSAGE_SUB_TYPE_UNSUBSCRIBED
-MESSAGE_SUB_TYPE_GET = LM_MESSAGE_SUB_TYPE_GET
-MESSAGE_SUB_TYPE_SET = LM_MESSAGE_SUB_TYPE_SET
-MESSAGE_SUB_TYPE_RESULT = LM_MESSAGE_SUB_TYPE_RESULT
-MESSAGE_SUB_TYPE_ERROR = LM_MESSAGE_SUB_TYPE_ERROR
-
-HANDLER_RESULT_REMOVE_MESSAGE = LM_HANDLER_RESULT_REMOVE_MESSAGE
-HANDLER_RESULT_ALLOW_MORE_HANDLERS = LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS
-
-HANDLER_PRIORITY_LAST = LM_HANDLER_PRIORITY_LAST
-HANDLER_PRIORITY_NORMAL = LM_HANDLER_PRIORITY_NORMAL
-HANDLER_PRIORITY_FIRST = LM_HANDLER_PRIORITY_FIRST
-
-DISCONNECT_REASON_OK = LM_DISCONNECT_REASON_OK
-DISCONNECT_REASON_PING_TIME_OUT = LM_DISCONNECT_REASON_PING_TIME_OUT
-DISCONNECT_REASON_HUP = LM_DISCONNECT_REASON_HUP
-DISCONNECT_REASON_ERROR = LM_DISCONNECT_REASON_ERROR
-DISCONNECT_REASON_UNKNOWN = LM_DISCONNECT_REASON_UNKNOWN
-
-# XXX: Replace with exceptions
-ERROR_CONNECTION_NOT_OPEN = LM_ERROR_CONNECTION_NOT_OPEN
-ERROR_CONNECTION_OPEN = LM_ERROR_CONNECTION_OPEN
-ERROR_AUTH_FAILED = LM_ERROR_AUTH_FAILED
-
-cdef struct DataHelper:
- PyObject *function
- PyObject *extra
-
-cdef void cresult_function_handler (LmConnection *connection, int success, void *user_data):
- cdef DataHelper *data
- data = <DataHelper*>user_data
-
- conn = Connection(_create=0)
- conn._set_conn(<object>connection)
-
- function = <object>data.function
- if data.extra:
- extra = <object>data.extra
- function(conn, success, extra)
- else:
- function(conn, success)
-
-cdef class _Connection:
- cdef LmConnection *conn
-
- def __init__(self, server=None, _create=1):
-
- if not _create:
- return 1
-
- self.conn = lm_connection_new(server)
- lm_connection_ref(self.conn)
-
- def _set_conn(self, conn):
- self.conn = <LmConnection*>conn
-
- def _get_conn(self):
- return <object>self.conn
-
- def open(self, function, extra=None):
- cdef GError *error
- cdef DataHelper *data
- error = NULL
-
- data = <DataHelper*>malloc(sizeof(DataHelper))
- data.function = <PyObject*>function
- Py_XINCREF(function)
- if extra:
- data.extra = <PyObject*>extra
- Py_XINCREF(extra)
- else:
- data.extra = NULL
-
- retval = lm_connection_open (self.conn,
- cresult_function_handler,
- <void*>data, #<void*>function,
- <GDestroyNotify>NULL,
- &error)
- if not retval:
- raise LmError, error.message
-
- def open_and_block(self):
- cdef GError *error
- error = NULL
-
- if not lm_connection_open_and_block(self.conn, &error):
- raise LmError, error.message
-
- def close(self):
- cdef GError *error
- error = NULL
-
- if not lm_connection_close(self.conn, &error):
- raise LmError, error.message
-
- def authenticate(self, username, password, resource, function, extra=None):
- cdef GError *error
- cdef DataHelper *data
- error = NULL
-
- data = <DataHelper*>malloc(sizeof(DataHelper))
- data.function = <PyObject*>function
- Py_XINCREF(function)
- if extra:
- data.extra = <PyObject*>extra
- Py_XINCREF(extra)
- else:
- data.extra = NULL
-
- retval = lm_connection_authenticate (self.conn, username, password, resource,
- cresult_function_handler,
- <void*>data,
- <GDestroyNotify>NULL,
- &error)
- if not retval:
- raise LmError, error.message
-
- def authenticate_and_block(self, username, password, resource):
- cdef GError *error
- error = NULL
-
- retval = lm_connection_authenticate_and_block(self.conn, username, password, resource, &error)
- if not retval:
- raise LmError, error.message
-
- def is_open(self):
- return <int>lm_connection_is_open(self.conn)
-
- def is_authenticated(self):
- return <int>lm_connection_is_authenticated(self.conn)
-
- def get_server(self):
- return lm_connection_get_server(self.conn)
-
- def set_server(self, server):
- lm_connection_set_server(self.conn, server)
-
- def get_port(self):
- return lm_connection_get_port(self.conn)
-
- def set_port(self, port):
- lm_connection_set_port(self.conn, port)
-
- def get_use_ssl(self):
- return <int>lm_connection_get_use_ssl(self.conn)
-
- def set_use_ssl(self, boolean):
- lm_connection_set_use_ssl(self.conn, boolean)
-
- def send(self, message):
- cdef GError *error
- error = NULL
-
- msg = message._get_msg(message)
- retval = lm_connection_send(self.conn, <LmMessage*>msg, &error)
- if not retval:
- raise LmError, error.message
-
- #int lm_connection_send_with_reply (LmConnection* connection, LmMessage* message, LmMessageHandler* handler, GError** error)
- #void lm_connection_register_message_handler (LmConnection* connection, LmMessageHandler* handler, LmMessageType type, LmHandlerPriority priority)
- #void lm_connection_unregister_message_handler (LmConnection* connection, LmMessageHandler* handler, LmMessageType type)
- #void lm_connection_set_disconnect_function (LmConnection* connection, LmDisconnectFunction function, void* user_data, GDestroyNotify notify)
-
- def send_with_reply(self, message, handler, error):
- pass
-
- def send_with_reply_and_block(self, message):
- cdef GError *error
- error = NULL
-
- print 'send_with_reply_and_block', message
-
- msg = message._get_msg()
- print msg
- retval = <object>lm_connection_send_with_reply_and_block(self.conn,
- <LmMessage*>msg,
- &error)
- print 'returned'
- print retval
- if not retval:
- raise LmError, error.message
-
- msg2 = Message(_create=0)
- msg2.set_msg(<object>retval)
- return msg2
-
- def send_raw(self, str):
- cdef GError *error
- error = NULL
-
- if not lm_connection_send_raw(self.conn, raw, &error):
- raise LmError, error.message
-
- def register_message_handler(self, handler, type, priority):
- pass
-
- def unregister_message_handler(self, handler, type, notify):
- pass
-
-cdef class _Message:
- cdef LmMessage *msg
- def __init__ (self, to, type, sub_type=None, _create=1):
-
- if not _create:
- return 1
-
- if not sub_type:
- self.msg = lm_message_new(to, type)
- else:
- self.msg = lm_message_new_with_sub_type(to, type, subtype)
-
- lm_message_ref(self.msg)
-
- def _set_msg(self, msg):
- self.msg = <LmMessage*>msg
-
- def _get_msg(self):
- return <object>self.msg
-
- def get_type(self):
- return lm_message_get_type(self.msg)
-
- def get_sub_type(self):
- return lm_message_get_sub_type(self.msg)
-
- def get_node(self):
- retval = <object>lm_message_get_node(self.msg)
- node = MessageNode(_create=0)
- node._set_node(<object>retval)
- return node
-
-cdef LmHandlerResult cmessage_function_handler (LmMessageHandler *handler,
- LmConnection *connection,
- LmMessage *message,
- void *user_data):
- function = <object>user_data
-
- hand = MessageHandler(_create=0)
- hand._set_handler(<object>handler)
-
- conn = Connection(_create=0)
- conn._set_conn(<object>connection)
-
- msg = Message(_create=0)
- msg._set_msg(<object>message)
-
- retval = function(hand, conn, msg)
-
- return retval
-
-cdef class MessageHandler:
- cdef LmMessageHandler* handler
- def __init__(self, function, _create=0):
- if not _create:
- return 0
-
- self.handler = <LmMessageHandler*>lm_message_handler_new(
- cmessage_function_handler,
- <void*>function,
- <GDestroyNotify>NULL)
-
- lm_message_handler_ref(self.handler)
-
- def _set_handler(self, handler):
- self.handler = <LmMessageHandler*>handler
-
- def _get_handler(self, handler):
- return <object>self.handler
-
- def invalidate(self):
- lm_message_handler_invalidate(self.handler)
-
- def is_valid(self):
- return lm_message_handler_is_valid(self.handler)
-
-cdef class MessageNode:
- cdef LmMessageNode *node
- def __init__(self, _create=1):
- if _create:
- raise TypeError, "MessageNode is an abstract class"
-
- def _set_node(self, node):
- self.node = <LmMessageNode*>node
-
- def _get_node(self, node):
- return <object>self.node
-
- def get_value(self):
- return lm_message_node_get_value(self.node)
-
- def set_value(self, value):
- lm_message_node_set_value(self.node, value)
-
- def add_child(self, name, value):
- retval = <object>lm_message_node_add_child(self.node, name, value)
- node = MessageNode(_create=0)
- node._set_node(<object>retval)
- return node
-
- def set_attribute(self, name, value):
- lm_message_node_set_attribute(self.node, name, value)
-
- def get_attribute(self, name):
- return lm_message_node_get_attribute(self.node, name)
-
- def get_child(self, child_name):
- retval = <object>lm_message_node_get_child(self.node, name)
- node = MessageNode(_create=0)
- node._set_node(<object>retval)
- return node
-
- def find_child(self, child_name):
- retval = <object>lm_message_node_find_child(self.node, name)
- node = MessageNode(_create=0)
- node._set_node(<object>retval)
- return node
-
- def get_raw_mode(self):
- return lm_message_node_get_raw_mode(self.node)
-
- def set_raw_mode(self, raw_mode):
- lm_message_node_set_raw_mode(self.node, raw_mode)
-
- def to_string(self):
- return lm_message_node_to_string(self.node)
-