Skip to content

Commit

Permalink
Add asynchronous invocation to Service and MultiServiceClient.
Browse files Browse the repository at this point in the history
  • Loading branch information
danielnorberg committed Feb 6, 2011
1 parent fb3c933 commit 7c6ab79
Show file tree
Hide file tree
Showing 10 changed files with 9,566 additions and 5,810 deletions.
937 changes: 570 additions & 367 deletions socketless/messenger.c

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions socketless/messenger.pxd
Expand Up @@ -3,6 +3,7 @@
from channel cimport Channel

cpdef invoke_all(message, messengers)
cpdef send_all(message, messengers, collector)

cdef class Collector:
cdef unsigned int item_count
Expand Down
13 changes: 7 additions & 6 deletions socketless/messenger.pyx
Expand Up @@ -12,6 +12,10 @@ import logging
from channel cimport Channel
from channel import Channel, DisconnectedException

cpdef send_all(message, messengers, collector):
for token, messenger in messengers:
(<Messenger>messenger).send(message, token, collector)

cpdef invoke_all(message, messengers):
cdef object messenger
cdef object token
Expand Down Expand Up @@ -150,12 +154,9 @@ cdef class Messenger:
callback(None, token)

cpdef close(self):
self.connector.kill()
if self.connected:
try:
self.channel.close()
except DisconnectedException:
pass
if self.connector:
self.connector.kill()
self.connector = None
self._teardown()

def __repr__(self):
Expand Down
938 changes: 526 additions & 412 deletions socketless/serialize.c

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions socketless/serialize.pxd
Expand Up @@ -4,6 +4,7 @@ cdef class MessageReader(object):
cdef object message
cdef public unsigned long i

cpdef update(self, object message)
cdef inline object _read(self, unsigned long length)
cdef inline object _read_string(self)
cdef inline unsigned long read_int(self)
Expand Down
5 changes: 4 additions & 1 deletion socketless/serialize.pyx
Expand Up @@ -12,7 +12,10 @@ cdef object int64_unpack = struct.Struct('!Q').unpack

cdef class MessageReader:
"""docstring for MessageReader"""
def __init__(self, message):
def __init__(self, message=None):
self.update(message)

cpdef update(self, message):
self.message = message
self.i = 0

Expand Down

0 comments on commit 7c6ab79

Please sign in to comment.