python/loudmouth.pyx
author hallski <hallski>
Sun, 10 Sep 2006 22:09:45 +0000
changeset 175 5e665ffe3e9c
parent 51 0d00219be016
permissions -rw-r--r--
2006-09-11 Mikael Hallendal <micke@imendio.com> * Release 1.0.5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
45
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
     1
# -*- Mode: Python -*-
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
     2
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
     3
cdef extern from "Python.h":
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
     4
    ctypedef struct PyObject
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
     5
    void Py_INCREF (object)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
     6
    void Py_DECREF (object)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
     7
    void Py_XINCREF (object)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
     8
    void Py_XDECREF (object)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
     9
    
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    10
cdef extern from "glib/gerror.h":
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    11
    ctypedef struct GError:
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    12
        int quark
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    13
        int domain
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    14
        char* message
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    15
    
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    16
cdef extern from "stdlib.h":
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    17
    cdef void *malloc(int size)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    18
    cdef void free(void *ptr)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    19
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    20
cdef extern from "glib/gtypes.h":
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    21
    ctypedef struct GDestroyNotify
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    22
    ctypedef struct gboolean
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    23
    
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    24
cdef extern from "loudmouth/loudmouth.h":
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    25
    ctypedef enum LmMessageType:
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    26
        LM_MESSAGE_TYPE_MESSAGE
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    27
        LM_MESSAGE_TYPE_PRESENCE
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    28
        LM_MESSAGE_TYPE_IQ
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    29
        LM_MESSAGE_TYPE_STREAM
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    30
        LM_MESSAGE_TYPE_STREAM_ERROR
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    31
        LM_MESSAGE_TYPE_UNKNOWN
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    32
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    33
    ctypedef enum LmMessageSubType:
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    34
        LM_MESSAGE_SUB_TYPE_NOT_SET
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    35
        LM_MESSAGE_SUB_TYPE_AVAILABLE
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    36
        LM_MESSAGE_SUB_TYPE_NORMAL
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    37
        LM_MESSAGE_SUB_TYPE_CHAT
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    38
        LM_MESSAGE_SUB_TYPE_GROUPCHAT
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    39
        LM_MESSAGE_SUB_TYPE_HEADLINE
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    40
        LM_MESSAGE_SUB_TYPE_UNAVAILABLE
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    41
        LM_MESSAGE_SUB_TYPE_PROBE
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    42
        LM_MESSAGE_SUB_TYPE_SUBSCRIBE
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    43
        LM_MESSAGE_SUB_TYPE_UNSUBSCRIBE
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    44
        LM_MESSAGE_SUB_TYPE_SUBSCRIBED
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    45
        LM_MESSAGE_SUB_TYPE_UNSUBSCRIBED
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    46
        LM_MESSAGE_SUB_TYPE_GET
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    47
        LM_MESSAGE_SUB_TYPE_SET
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    48
        LM_MESSAGE_SUB_TYPE_RESULT
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    49
        LM_MESSAGE_SUB_TYPE_ERROR
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    50
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    51
    ctypedef enum LmHandlerResult:
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    52
        LM_HANDLER_RESULT_REMOVE_MESSAGE
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    53
        LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    54
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    55
    ctypedef enum LmHandlerPriority:
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    56
        LM_HANDLER_PRIORITY_LAST
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    57
        LM_HANDLER_PRIORITY_NORMAL
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    58
        LM_HANDLER_PRIORITY_FIRST
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    59
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    60
    ctypedef enum LmDisconnectReason:
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    61
        LM_DISCONNECT_REASON_OK
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    62
        LM_DISCONNECT_REASON_PING_TIME_OUT
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    63
        LM_DISCONNECT_REASON_HUP
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    64
        LM_DISCONNECT_REASON_ERROR
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    65
        LM_DISCONNECT_REASON_UNKNOWN
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    66
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    67
    ctypedef enum _LmError:
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    68
        LM_ERROR_CONNECTION_NOT_OPEN
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    69
        LM_ERROR_CONNECTION_OPEN
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    70
        LM_ERROR_AUTH_FAILED
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    71
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    72
    ctypedef struct LmConnection
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    73
    ctypedef struct LmMessage
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    74
    ctypedef struct LmMessageNode
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    75
    ctypedef struct LmMessageHandler
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    76
    ctypedef struct LmMessagePriv
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    77
    
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    78
    ctypedef struct GError
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    79
    ctypedef struct GDestroyNotify
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    80
    
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    81
    ctypedef void (* LmResultFunction) (LmConnection *connection, int success, void* user_data)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    82
    ctypedef void (* LmDisconnectFunction) (LmConnection *connection, LmDisconnectReason reason, void* user_data)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    83
    
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    84
    ctypedef LmHandlerResult (* LmHandleMessageFunction) (LmMessageHandler *handler, LmConnection *connection, LmMessage *message, void* user_data)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    85
    
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    86
    LmConnection*        lm_connection_new (char* server)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    87
    int                  lm_connection_open (LmConnection* connection, LmResultFunction function, void* user_data, GDestroyNotify notify, GError** error)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    88
    int                  lm_connection_open_and_block (LmConnection* connection, GError** error)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    89
    int                  lm_connection_close (LmConnection* connection, GError** error)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    90
    int                  lm_connection_authenticate (LmConnection* connection, char* username, char* password, char* resource, LmResultFunction function, void* user_data, GDestroyNotify notify, GError** error)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    91
    int                  lm_connection_authenticate_and_block (LmConnection* connection, char* username, char* password, char* resource, GError** error)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    92
    gboolean             lm_connection_is_open (LmConnection* connection)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    93
    gboolean             lm_connection_is_authenticated (LmConnection* connection)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    94
    char*                lm_connection_get_server (LmConnection* connection)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    95
    void                 lm_connection_set_server (LmConnection* connection, char* server)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    96
    int                  lm_connection_get_port (LmConnection* connection)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    97
    void                 lm_connection_set_port (LmConnection* connection, int port)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    98
    gboolean             lm_connection_get_use_ssl (LmConnection* connection)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
    99
    void                 lm_connection_set_use_ssl (LmConnection* connection, int use_ssl)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   100
    int                  lm_connection_send (LmConnection* connection, LmMessage* message, GError** error)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   101
    int                  lm_connection_send_with_reply (LmConnection* connection, LmMessage* message, LmMessageHandler* handler, GError** error)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   102
    LmMessage*           lm_connection_send_with_reply_and_block (LmConnection* connection, LmMessage* message, GError** error)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   103
    void                 lm_connection_register_message_handler (LmConnection* connection, LmMessageHandler* handler, LmMessageType type, LmHandlerPriority priority)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   104
    void                 lm_connection_unregister_message_handler (LmConnection* connection, LmMessageHandler* handler, LmMessageType type)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   105
    void                 lm_connection_set_disconnect_function (LmConnection* connection, LmDisconnectFunction function, void* user_data, GDestroyNotify notify)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   106
    int                  lm_connection_send_raw (LmConnection* connection, char* str, GError** error)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   107
    LmConnection*        lm_connection_ref (LmConnection* connection)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   108
    void                 lm_connection_unref (LmConnection* connection)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   109
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   110
    LmMessage*           lm_message_new (char* to, LmMessageType type)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   111
    LmMessage*           lm_message_new_with_sub_type (char* to, LmMessageType type, LmMessageSubType sub_type)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   112
    LmMessageType        lm_message_get_type (LmMessage* message)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   113
    LmMessageSubType     lm_message_get_sub_type (LmMessage* message)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   114
    LmMessageNode*       lm_message_get_node (LmMessage* message)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   115
    LmMessage*           lm_message_ref (LmMessage* message)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   116
    void                 lm_message_unref (LmMessage* message)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   117
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   118
    LmMessageHandler*    lm_message_handler_new (LmHandleMessageFunction function, void* user_data, GDestroyNotify notify)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   119
    void                 lm_message_handler_invalidate (LmMessageHandler* handler)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   120
    int                  lm_message_handler_is_valid (LmMessageHandler* handler)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   121
    LmMessageHandler*    lm_message_handler_ref (LmMessageHandler* handler)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   122
    void                 lm_message_handler_unref (LmMessageHandler* handler)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   123
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   124
    char*                lm_message_node_get_value (LmMessageNode* node)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   125
    void                 lm_message_node_set_value (LmMessageNode* node, char* value)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   126
    LmMessageNode*       lm_message_node_add_child (LmMessageNode* node, char* name, char* value)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   127
    void                 lm_message_node_set_attribute (LmMessageNode* node, char* name, char* value)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   128
    char*                lm_message_node_get_attribute (LmMessageNode* node, char* name)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   129
    LmMessageNode*       lm_message_node_get_child (LmMessageNode* message_node, char* child_name)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   130
    LmMessageNode*       lm_message_node_find_child (LmMessageNode* message_node, char* child_name)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   131
    int                  lm_message_node_get_raw_mode (LmMessageNode* node)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   132
    void                 lm_message_node_set_raw_mode (LmMessageNode* node, int raw_mode)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   133
    LmMessageNode*       lm_message_node_ref (LmMessageNode* node)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   134
    void                 lm_message_node_unref (LmMessageNode* node)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   135
    char*                lm_message_node_to_string (LmMessageNode* node)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   136
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   137
class LmError(Exception):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   138
    pass
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   139
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   140
# Export all enum values
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   141
MESSAGE_TYPE_MESSAGE      = LM_MESSAGE_TYPE_MESSAGE
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   142
MESSAGE_TYPE_PRESENCE     = LM_MESSAGE_TYPE_PRESENCE
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   143
MESSAGE_TYPE_IQ           = LM_MESSAGE_TYPE_IQ
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   144
MESSAGE_TYPE_STREAM       = LM_MESSAGE_TYPE_STREAM
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   145
MESSAGE_TYPE_STREAM_ERROR = LM_MESSAGE_TYPE_STREAM_ERROR
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   146
MESSAGE_TYPE_UNKNOWN      = LM_MESSAGE_TYPE_UNKNOWN
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   147
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   148
MESSAGE_SUB_TYPE_NOT_SET      = LM_MESSAGE_SUB_TYPE_NOT_SET
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   149
MESSAGE_SUB_TYPE_AVAILABLE    = LM_MESSAGE_SUB_TYPE_AVAILABLE
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   150
MESSAGE_SUB_TYPE_NORMAL       = LM_MESSAGE_SUB_TYPE_NORMAL
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   151
MESSAGE_SUB_TYPE_CHAT         = LM_MESSAGE_SUB_TYPE_CHAT
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   152
MESSAGE_SUB_TYPE_GROUPCHAT    = LM_MESSAGE_SUB_TYPE_GROUPCHAT
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   153
MESSAGE_SUB_TYPE_HEADLINE     = LM_MESSAGE_SUB_TYPE_HEADLINE
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   154
MESSAGE_SUB_TYPE_UNAVAILABLE  = LM_MESSAGE_SUB_TYPE_UNAVAILABLE
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   155
MESSAGE_SUB_TYPE_PROBE        = LM_MESSAGE_SUB_TYPE_PROBE
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   156
MESSAGE_SUB_TYPE_SUBSCRIBE    = LM_MESSAGE_SUB_TYPE_SUBSCRIBE
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   157
MESSAGE_SUB_TYPE_UNSUBSCRIBE  = LM_MESSAGE_SUB_TYPE_UNSUBSCRIBE
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   158
MESSAGE_SUB_TYPE_SUBSCRIBED   = LM_MESSAGE_SUB_TYPE_SUBSCRIBED
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   159
MESSAGE_SUB_TYPE_UNSUBSCRIBED = LM_MESSAGE_SUB_TYPE_UNSUBSCRIBED
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   160
MESSAGE_SUB_TYPE_GET          = LM_MESSAGE_SUB_TYPE_GET
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   161
MESSAGE_SUB_TYPE_SET          = LM_MESSAGE_SUB_TYPE_SET
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   162
MESSAGE_SUB_TYPE_RESULT       = LM_MESSAGE_SUB_TYPE_RESULT
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   163
MESSAGE_SUB_TYPE_ERROR        = LM_MESSAGE_SUB_TYPE_ERROR
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   164
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   165
HANDLER_RESULT_REMOVE_MESSAGE      = LM_HANDLER_RESULT_REMOVE_MESSAGE
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   166
HANDLER_RESULT_ALLOW_MORE_HANDLERS = LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   167
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   168
HANDLER_PRIORITY_LAST   = LM_HANDLER_PRIORITY_LAST
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   169
HANDLER_PRIORITY_NORMAL = LM_HANDLER_PRIORITY_NORMAL
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   170
HANDLER_PRIORITY_FIRST  = LM_HANDLER_PRIORITY_FIRST
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   171
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   172
DISCONNECT_REASON_OK            = LM_DISCONNECT_REASON_OK
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   173
DISCONNECT_REASON_PING_TIME_OUT = LM_DISCONNECT_REASON_PING_TIME_OUT
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   174
DISCONNECT_REASON_HUP           = LM_DISCONNECT_REASON_HUP
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   175
DISCONNECT_REASON_ERROR         = LM_DISCONNECT_REASON_ERROR
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   176
DISCONNECT_REASON_UNKNOWN       = LM_DISCONNECT_REASON_UNKNOWN
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   177
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   178
# XXX: Replace with exceptions
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   179
ERROR_CONNECTION_NOT_OPEN = LM_ERROR_CONNECTION_NOT_OPEN
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   180
ERROR_CONNECTION_OPEN     = LM_ERROR_CONNECTION_OPEN
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   181
ERROR_AUTH_FAILED         = LM_ERROR_AUTH_FAILED
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   182
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   183
cdef struct DataHelper:
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   184
    PyObject *function
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   185
    PyObject *extra
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   186
    
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   187
cdef void cresult_function_handler (LmConnection *connection, int success, void *user_data):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   188
    cdef DataHelper *data
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   189
    data = <DataHelper*>user_data
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   190
    
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   191
    conn = Connection(_create=0)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   192
    conn._set_conn(<object>connection)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   193
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   194
    function = <object>data.function
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   195
    if data.extra:
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   196
        extra = <object>data.extra
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   197
        function(conn, success, extra)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   198
    else:
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   199
        function(conn, success)    
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   200
    
51
0d00219be016 updated
hallski <hallski>
parents: 45
diff changeset
   201
cdef class _Connection:
45
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   202
    cdef LmConnection *conn
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   203
    
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   204
    def __init__(self, server=None, _create=1):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   205
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   206
        if not _create:
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   207
            return 1
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   208
        
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   209
        self.conn = lm_connection_new(server)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   210
        lm_connection_ref(self.conn)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   211
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   212
    def _set_conn(self, conn):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   213
        self.conn = <LmConnection*>conn
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   214
        
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   215
    def _get_conn(self):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   216
        return <object>self.conn
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   217
    
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   218
    def open(self, function, extra=None):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   219
        cdef GError *error
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   220
        cdef DataHelper *data
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   221
        error = NULL
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   222
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   223
        data = <DataHelper*>malloc(sizeof(DataHelper))
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   224
        data.function = <PyObject*>function
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   225
        Py_XINCREF(function)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   226
        if extra:
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   227
            data.extra = <PyObject*>extra
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   228
            Py_XINCREF(extra)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   229
        else:
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   230
            data.extra = NULL
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   231
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   232
        retval = lm_connection_open (self.conn,
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   233
                                     cresult_function_handler,
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   234
                                     <void*>data,  #<void*>function,
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   235
                                     <GDestroyNotify>NULL,
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   236
                                     &error)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   237
        if not retval:
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   238
            raise LmError, error.message
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   239
    
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   240
    def open_and_block(self):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   241
        cdef GError *error
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   242
        error = NULL
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   243
        
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   244
        if not lm_connection_open_and_block(self.conn, &error):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   245
            raise LmError, error.message
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   246
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   247
    def close(self):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   248
        cdef GError *error
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   249
        error = NULL
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   250
        
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   251
        if not lm_connection_close(self.conn, &error):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   252
            raise LmError, error.message
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   253
        
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   254
    def authenticate(self, username, password, resource, function, extra=None):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   255
        cdef GError *error
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   256
        cdef DataHelper *data
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   257
        error = NULL
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   258
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   259
        data = <DataHelper*>malloc(sizeof(DataHelper))
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   260
        data.function = <PyObject*>function
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   261
        Py_XINCREF(function)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   262
        if extra:
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   263
            data.extra = <PyObject*>extra
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   264
            Py_XINCREF(extra)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   265
        else:
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   266
            data.extra = NULL
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   267
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   268
        retval = lm_connection_authenticate (self.conn, username, password, resource,
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   269
                                             cresult_function_handler,
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   270
                                             <void*>data,
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   271
                                             <GDestroyNotify>NULL,
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   272
                                             &error)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   273
        if not retval:
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   274
            raise LmError, error.message
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   275
        
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   276
    def authenticate_and_block(self, username, password, resource):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   277
        cdef GError *error
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   278
        error = NULL
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   279
        
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   280
        retval = lm_connection_authenticate_and_block(self.conn, username, password, resource, &error)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   281
        if not retval:
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   282
            raise LmError, error.message
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   283
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   284
    def is_open(self):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   285
        return <int>lm_connection_is_open(self.conn)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   286
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   287
    def is_authenticated(self):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   288
        return <int>lm_connection_is_authenticated(self.conn)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   289
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   290
    def get_server(self):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   291
        return lm_connection_get_server(self.conn)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   292
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   293
    def set_server(self, server):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   294
        lm_connection_set_server(self.conn, server)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   295
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   296
    def get_port(self):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   297
        return lm_connection_get_port(self.conn)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   298
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   299
    def set_port(self, port):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   300
        lm_connection_set_port(self.conn, port)  
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   301
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   302
    def get_use_ssl(self):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   303
        return <int>lm_connection_get_use_ssl(self.conn)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   304
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   305
    def set_use_ssl(self, boolean):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   306
        lm_connection_set_use_ssl(self.conn, boolean)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   307
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   308
    def send(self, message):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   309
        cdef GError *error
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   310
        error = NULL
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   311
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   312
        msg = message._get_msg(message)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   313
        retval = lm_connection_send(self.conn, <LmMessage*>msg, &error)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   314
        if not retval:
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   315
            raise LmError, error.message
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   316
    
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   317
    #int    lm_connection_send_with_reply (LmConnection* connection, LmMessage* message, LmMessageHandler* handler, GError** error)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   318
    #void   lm_connection_register_message_handler (LmConnection* connection, LmMessageHandler* handler, LmMessageType type, LmHandlerPriority priority)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   319
    #void   lm_connection_unregister_message_handler (LmConnection* connection, LmMessageHandler* handler, LmMessageType type)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   320
    #void   lm_connection_set_disconnect_function (LmConnection* connection, LmDisconnectFunction function, void* user_data, GDestroyNotify notify)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   321
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   322
    def send_with_reply(self, message, handler, error):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   323
        pass
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   324
    
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   325
    def send_with_reply_and_block(self, message):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   326
        cdef GError *error
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   327
        error = NULL
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   328
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   329
        print 'send_with_reply_and_block', message
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   330
        
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   331
        msg = message._get_msg()
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   332
        print msg
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   333
        retval = <object>lm_connection_send_with_reply_and_block(self.conn,
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   334
                                                                 <LmMessage*>msg,
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   335
                                                                 &error)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   336
        print 'returned'
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   337
        print retval
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   338
        if not retval:
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   339
            raise LmError, error.message
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   340
        
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   341
        msg2 = Message(_create=0)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   342
        msg2.set_msg(<object>retval)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   343
        return msg2
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   344
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   345
    def send_raw(self, str):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   346
        cdef GError *error
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   347
        error = NULL
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   348
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   349
        if not lm_connection_send_raw(self.conn, raw, &error):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   350
            raise LmError, error.message
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   351
    
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   352
    def register_message_handler(self, handler, type, priority):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   353
        pass
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   354
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   355
    def unregister_message_handler(self, handler, type, notify):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   356
        pass
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   357
51
0d00219be016 updated
hallski <hallski>
parents: 45
diff changeset
   358
cdef class _Message:
45
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   359
    cdef LmMessage *msg
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   360
    def __init__ (self, to, type, sub_type=None, _create=1):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   361
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   362
        if not _create:
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   363
            return 1
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   364
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   365
        if not sub_type:
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   366
            self.msg = lm_message_new(to, type)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   367
        else:
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   368
            self.msg = lm_message_new_with_sub_type(to, type, subtype)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   369
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   370
        lm_message_ref(self.msg)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   371
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   372
    def _set_msg(self, msg):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   373
        self.msg = <LmMessage*>msg
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   374
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   375
    def _get_msg(self):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   376
        return <object>self.msg
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   377
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   378
    def get_type(self):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   379
        return lm_message_get_type(self.msg)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   380
    
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   381
    def get_sub_type(self):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   382
        return lm_message_get_sub_type(self.msg)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   383
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   384
    def get_node(self):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   385
        retval = <object>lm_message_get_node(self.msg)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   386
        node = MessageNode(_create=0)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   387
        node._set_node(<object>retval)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   388
        return node
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   389
    
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   390
cdef LmHandlerResult cmessage_function_handler (LmMessageHandler *handler,
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   391
                                                LmConnection     *connection,
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   392
                                                LmMessage        *message,
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   393
                                                void             *user_data):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   394
    function = <object>user_data
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   395
    
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   396
    hand = MessageHandler(_create=0)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   397
    hand._set_handler(<object>handler)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   398
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   399
    conn = Connection(_create=0)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   400
    conn._set_conn(<object>connection)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   401
    
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   402
    msg = Message(_create=0)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   403
    msg._set_msg(<object>message)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   404
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   405
    retval = function(hand, conn, msg)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   406
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   407
    return retval
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   408
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   409
cdef class MessageHandler:
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   410
    cdef LmMessageHandler* handler
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   411
    def __init__(self, function, _create=0):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   412
        if not _create:
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   413
            return 0
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   414
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   415
        self.handler = <LmMessageHandler*>lm_message_handler_new(
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   416
            cmessage_function_handler,
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   417
            <void*>function,
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   418
            <GDestroyNotify>NULL)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   419
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   420
        lm_message_handler_ref(self.handler)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   421
        
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   422
    def _set_handler(self, handler):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   423
        self.handler = <LmMessageHandler*>handler
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   424
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   425
    def _get_handler(self, handler):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   426
        return <object>self.handler
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   427
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   428
    def invalidate(self):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   429
        lm_message_handler_invalidate(self.handler)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   430
        
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   431
    def is_valid(self):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   432
        return lm_message_handler_is_valid(self.handler)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   433
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   434
cdef class MessageNode:
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   435
    cdef LmMessageNode *node
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   436
    def __init__(self, _create=1):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   437
        if _create:
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   438
            raise TypeError, "MessageNode is an abstract class"
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   439
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   440
    def _set_node(self, node):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   441
        self.node = <LmMessageNode*>node
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   442
        
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   443
    def _get_node(self, node):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   444
        return <object>self.node
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   445
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   446
    def get_value(self):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   447
        return lm_message_node_get_value(self.node)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   448
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   449
    def set_value(self, value):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   450
        lm_message_node_set_value(self.node, value)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   451
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   452
    def add_child(self, name, value):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   453
        retval = <object>lm_message_node_add_child(self.node, name, value)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   454
        node = MessageNode(_create=0)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   455
        node._set_node(<object>retval)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   456
        return node
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   457
            
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   458
    def set_attribute(self, name, value):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   459
        lm_message_node_set_attribute(self.node, name, value)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   460
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   461
    def get_attribute(self, name):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   462
        return lm_message_node_get_attribute(self.node, name)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   463
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   464
    def get_child(self, child_name):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   465
        retval = <object>lm_message_node_get_child(self.node, name)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   466
        node = MessageNode(_create=0)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   467
        node._set_node(<object>retval)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   468
        return node
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   469
    
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   470
    def find_child(self, child_name):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   471
        retval = <object>lm_message_node_find_child(self.node, name)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   472
        node = MessageNode(_create=0)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   473
        node._set_node(<object>retval)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   474
        return node
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   475
    
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   476
    def get_raw_mode(self):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   477
        return lm_message_node_get_raw_mode(self.node)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   478
    
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   479
    def set_raw_mode(self, raw_mode):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   480
        lm_message_node_set_raw_mode(self.node, raw_mode)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   481
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   482
    def to_string(self):
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   483
        return lm_message_node_to_string(self.node)
08e981735eee First take on python bindings
zilch <zilch>
parents:
diff changeset
   484