[Zodb-checkins] SVN: ZODB/branches/jim-zrpc/src/ZEO/zrpc/connection.py replace flags and single async flag with simple async argument.
Jim Fulton
jim at zope.com
Wed Jan 27 11:34:12 EST 2010
Log message for revision 108572:
replace flags and single async flag with simple async argument.
Changed:
U ZODB/branches/jim-zrpc/src/ZEO/zrpc/connection.py
-=-
Modified: ZODB/branches/jim-zrpc/src/ZEO/zrpc/connection.py
===================================================================
--- ZODB/branches/jim-zrpc/src/ZEO/zrpc/connection.py 2010-01-27 16:32:20 UTC (rev 108571)
+++ ZODB/branches/jim-zrpc/src/ZEO/zrpc/connection.py 2010-01-27 16:34:12 UTC (rev 108572)
@@ -30,7 +30,6 @@
import ZODB.POSException
REPLY = ".reply" # message name used for replies
-ASYNC = 1
exception_type_type = type(Exception)
@@ -304,9 +303,7 @@
client for that particular call.
The protocol also supports asynchronous calls. The client does
- not wait for a return value for an asynchronous call. The only
- defined flag is ASYNC. If a method call message has the ASYNC
- flag set, the server will raise an exception.
+ not wait for a return value for an asynchronous call.
If a method call raises an Exception, the exception is propagated
back to the client via the REPLY message. The client side will
@@ -537,29 +534,29 @@
# will raise an exception. The exception will ultimately
# result in asycnore calling handle_error(), which will
# close the connection.
- msgid, flags, name, args = self.marshal.decode(message)
+ msgid, async, name, args = self.marshal.decode(message)
if debug_zrpc:
- self.log("recv msg: %s, %s, %s, %s" % (msgid, flags, name,
+ self.log("recv msg: %s, %s, %s, %s" % (msgid, async, name,
short_repr(args)),
level=TRACE)
if name == REPLY:
- self.handle_reply(msgid, flags, args)
+ self.handle_reply(msgid, async, args)
else:
- self.handle_request(msgid, flags, name, args)
+ self.handle_request(msgid, async, name, args)
- def handle_reply(self, msgid, flags, args):
+ def handle_reply(self, msgid, async, args):
if debug_zrpc:
self.log("recv reply: %s, %s, %s"
- % (msgid, flags, short_repr(args)), level=TRACE)
+ % (msgid, async, short_repr(args)), level=TRACE)
self.replies_cond.acquire()
try:
- self.replies[msgid] = flags, args
+ self.replies[msgid] = args
self.replies_cond.notifyAll()
finally:
self.replies_cond.release()
- def handle_request(self, msgid, flags, name, args):
+ def handle_request(self, msgid, async, name, args):
obj = self.obj
if name.startswith('_') or not hasattr(obj, name):
@@ -590,9 +587,9 @@
self.log("%s() raised exception: %s" % (name, msg),
logging.ERROR, exc_info=True)
error = sys.exc_info()[:2]
- return self.return_error(msgid, flags, *error)
+ return self.return_error(msgid, async, *error)
- if flags & ASYNC:
+ if async:
if ret is not None:
raise ZRPCError("async method %s returned value %s" %
(name, short_repr(ret)))
@@ -633,8 +630,8 @@
self.message_output(msg)
self.poll()
- def return_error(self, msgid, flags, err_type, err_value):
- if flags & ASYNC:
+ def return_error(self, msgid, async, err_type, err_value):
+ if async:
self.log("Asynchronous call raised exception: %s" % self,
level=logging.ERROR, exc_info=True)
return
@@ -675,21 +672,21 @@
finally:
self.msgid_lock.release()
- def __call_message(self, method, args, flags):
+ def __call_message(self, method, args, async):
# compute a message and return it
msgid = self.__new_msgid()
if debug_zrpc:
- self.log("send msg: %d, %d, %s, ..." % (msgid, flags, method),
+ self.log("send msg: %d, %d, %s, ..." % (msgid, async, method),
level=TRACE)
- return self.marshal.encode(msgid, flags, method, args)
+ return self.marshal.encode(msgid, async, method, args)
- def send_call(self, method, args, flags):
+ def send_call(self, method, args, async):
# send a message and return its msgid
msgid = self.__new_msgid()
if debug_zrpc:
- self.log("send msg: %d, %d, %s, ..." % (msgid, flags, method),
+ self.log("send msg: %d, %d, %s, ..." % (msgid, async, method),
level=TRACE)
- buf = self.marshal.encode(msgid, flags, method, args)
+ buf = self.marshal.encode(msgid, async, method, args)
self.message_output(buf)
return msgid
@@ -697,7 +694,7 @@
if self.closed:
raise DisconnectedError()
msgid = self.send_call(method, args, 0)
- r_flags, r_args = self.wait(msgid)
+ r_args = self.wait(msgid)
if (isinstance(r_args, tuple) and len(r_args) > 1
and type(r_args[0]) == exception_type_type
and issubclass(r_args[0], Exception)):
@@ -717,7 +714,7 @@
return msgid
def _deferred_wait(self, msgid):
- r_flags, r_args = self.wait(msgid)
+ r_args = self.wait(msgid)
if (isinstance(r_args, tuple)
and type(r_args[0]) == exception_type_type
and issubclass(r_args[0], Exception)):
@@ -729,7 +726,7 @@
def callAsync(self, method, *args):
if self.closed:
raise DisconnectedError()
- self.send_call(method, args, ASYNC)
+ self.send_call(method, args, 1)
self.poll()
def callAsyncNoPoll(self, method, *args):
@@ -738,7 +735,7 @@
# allowing any client to sneak in a load request.
if self.closed:
raise DisconnectedError()
- self.send_call(method, args, ASYNC)
+ self.send_call(method, args, 1)
def callAsyncIterator(self, iterator):
"""Queue a sequence of calls using an iterator
@@ -750,7 +747,7 @@
def __outputIterator(self, iterator):
for method, args in iterator:
- yield self.__call_message(method, args, ASYNC)
+ yield self.__call_message(method, args, 1)
def wait(self, msgid):
@@ -769,8 +766,8 @@
while 1:
if self.closed:
raise DisconnectedError()
- reply = self.replies.get(msgid)
- if reply is not None:
+ reply = self.replies.get(msgid, self)
+ if reply is not self:
del self.replies[msgid]
if debug_zrpc:
self.log("wait(%d): reply=%s" %
More information about the Zodb-checkins
mailing list