diff options
author | Rafael H. Schloming <rhs@apache.org> | 2009-01-08 17:10:20 +0000 |
---|---|---|
committer | Rafael H. Schloming <rhs@apache.org> | 2009-01-08 17:10:20 +0000 |
commit | 27293b8e3624cb13fa346016b65f0b8a71b0279a (patch) | |
tree | 36d99e9e1f39715e0669834520ce638e3904b937 /python/qpid/connection.py | |
parent | fc6840f32b54a81241fa91b0c0248ce395609ba6 (diff) | |
download | qpid-python-27293b8e3624cb13fa346016b65f0b8a71b0279a.tar.gz |
made codegen happen on module import rather than on object instantiation, this makes things like help(Session) much more useful
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@732760 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'python/qpid/connection.py')
-rw-r--r-- | python/qpid/connection.py | 23 |
1 files changed, 6 insertions, 17 deletions
diff --git a/python/qpid/connection.py b/python/qpid/connection.py index 4c9c02822a..6665e3e40c 100644 --- a/python/qpid/connection.py +++ b/python/qpid/connection.py @@ -23,9 +23,8 @@ from util import wait, notify from assembler import Assembler, Segment from codec010 import StringCodec from session import Session -from invoker import Invoker -from spec010 import Control, Command, load -from spec import default +from generator import control_invoker +from spec import SPEC from exceptions import * from logging import getLogger import delegates @@ -63,12 +62,9 @@ def sslwrap(sock): class Connection(Assembler): - def __init__(self, sock, spec=None, delegate=client, **args): + def __init__(self, sock, spec=SPEC, delegate=client, **args): Assembler.__init__(self, sslwrap(sock)) - if spec == None: - spec = load(default()) self.spec = spec - self.track = self.spec["track"] self.lock = RLock() self.attached = {} @@ -96,7 +92,7 @@ class Connection(Assembler): else: ssn = self.sessions.get(name) if ssn is None: - ssn = Session(name, self.spec, delegate=delegate) + ssn = Session(name, delegate=delegate) self.sessions[name] = ssn elif ssn.channel is not None: if force: @@ -189,23 +185,16 @@ class Connection(Assembler): log = getLogger("qpid.io.ctl") -class Channel(Invoker): +class Channel(control_invoker(SPEC)): def __init__(self, connection, id): self.connection = connection self.id = id self.session = None - def resolve_method(self, name): - inst = self.connection.spec.instructions.get(name) - if inst is not None and isinstance(inst, Control): - return self.METHOD, inst - else: - return self.ERROR, None - def invoke(self, type, args, kwargs): ctl = type.new(args, kwargs) - sc = StringCodec(self.connection.spec) + sc = StringCodec(self.spec) sc.write_control(ctl) self.connection.write_segment(Segment(True, True, type.segment_type, type.track, self.id, sc.encoded)) |