summaryrefslogtreecommitdiff
path: root/python/qpid/connection.py
diff options
context:
space:
mode:
authorRafael H. Schloming <rhs@apache.org>2009-01-08 17:10:20 +0000
committerRafael H. Schloming <rhs@apache.org>2009-01-08 17:10:20 +0000
commit27293b8e3624cb13fa346016b65f0b8a71b0279a (patch)
tree36d99e9e1f39715e0669834520ce638e3904b937 /python/qpid/connection.py
parentfc6840f32b54a81241fa91b0c0248ce395609ba6 (diff)
downloadqpid-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.py23
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))