def decode_control(self, encoded): sc = StringCodec(encoded) code = sc.read_uint16() cls = CONTROLS[code] ctl = cls() sc.read_fields(ctl) return ctl
def getObjects (self, channel, userSequence, className, bank=0): """ Request immediate content from broker """ codec = Codec () self.setHeader (codec, ord ('G'), userSequence) ft = {} ft["_class"] = className codec.write_map (ft) msg = channel.message(codec.encoded, routing_key="agent.1.%d" % bank) channel.send ("qpid.management", msg)
def getObjects(self, channel, userSequence, className, bank=0): """ Request immediate content from broker """ codec = Codec() self.setHeader(codec, ord('G'), userSequence) ft = {} ft["_class"] = className codec.write_map(ft) msg = channel.message(codec.encoded, routing_key="agent.1.%d" % bank) channel.send("qpid.management", msg)
def decode_command(self, encoded): sc = StringCodec(encoded) code = sc.read_uint16() cls = COMMANDS[code] hdr = sc.read_compound(Header) cmd = cls() sc.read_fields(cmd) cmd.sync = hdr.sync return cmd
def handlePackageInd(self, ch, codec): pname = codec.read_str8() if pname not in self.packages: self.packages[pname] = {} # Send a class request sendCodec = Codec() seq = self.seqMgr.reserve("outstanding") self.setHeader(sendCodec, ord('Q'), seq) self.incOutstanding(ch) sendCodec.write_str8(pname) smsg = ch.message(sendCodec.encoded) ch.send("qpid.management", smsg)
def handlePackageInd (self, ch, codec): pname = codec.read_str8 () if pname not in self.packages: self.packages[pname] = {} # Send a class request sendCodec = Codec () seq = self.seqMgr.reserve ("outstanding") self.setHeader (sendCodec, ord ('Q'), seq) self.incOutstanding (ch) sendCodec.write_str8 (pname) smsg = ch.message(sendCodec.encoded) ch.send ("qpid.management", smsg)
def handleClassInd (self, ch, codec): kind = codec.read_uint8() if kind != 1: # This API doesn't handle new-style events return pname = codec.read_str8() cname = codec.read_str8() hash = codec.read_bin128() if pname not in self.packages: return if (cname, hash) not in self.packages[pname]: # Send a schema request sendCodec = Codec () seq = self.seqMgr.reserve ("outstanding") self.setHeader (sendCodec, ord ('S'), seq) self.incOutstanding (ch) sendCodec.write_str8 (pname) sendCodec.write_str8 (cname) sendCodec.write_bin128 (hash) smsg = ch.message(sendCodec.encoded) ch.send ("qpid.management", smsg)
def handleClassInd(self, ch, codec): kind = codec.read_uint8() if kind != 1: # This API doesn't handle new-style events return pname = codec.read_str8() cname = codec.read_str8() hash = codec.read_bin128() if pname not in self.packages: return if (cname, hash) not in self.packages[pname]: # Send a schema request sendCodec = Codec() seq = self.seqMgr.reserve("outstanding") self.setHeader(sendCodec, ord('S'), seq) self.incOutstanding(ch) sendCodec.write_str8(pname) sendCodec.write_str8(cname) sendCodec.write_bin128(hash) smsg = ch.message(sendCodec.encoded) ch.send("qpid.management", smsg)
def method(self, channel, userSequence, objId, classId, methodName, args): """ Invoke a method on an object """ codec = Codec() sequence = self.seqMgr.reserve((userSequence, classId, methodName)) self.setHeader(codec, ord('M'), sequence) objId.encode(codec) codec.write_str8(classId[0]) codec.write_str8(classId[1]) codec.write_bin128(classId[2]) codec.write_str8(methodName) bank = "%d.%d" % (objId.getBroker(), objId.getBank()) # Encode args according to schema if classId not in self.schema: self.seqMgr.release(sequence) raise ValueError("Unknown class name: %s" % classId) schemaClass = self.schema[classId] ms = schemaClass['M'] arglist = None for mname in ms: (mdesc, margs) = ms[mname] if mname == methodName: arglist = margs if arglist == None: self.seqMgr.release(sequence) raise ValueError("Unknown method name: %s" % methodName) for arg in arglist: if arg[2].find("I") != -1: value = arg[8] # default if arg[0] in args: value = args[arg[0]] if value == None: self.seqMgr.release(sequence) raise ValueError("Missing non-defaulted argument: %s" % arg[0]) self.encodeValue(codec, value, arg[1]) packageName = classId[0] className = classId[1] msg = channel.message(codec.encoded, "agent." + bank) channel.send("qpid.management", msg)
def method (self, channel, userSequence, objId, classId, methodName, args): """ Invoke a method on an object """ codec = Codec () sequence = self.seqMgr.reserve ((userSequence, classId, methodName)) self.setHeader (codec, ord ('M'), sequence) objId.encode(codec) codec.write_str8 (classId[0]) codec.write_str8 (classId[1]) codec.write_bin128 (classId[2]) codec.write_str8 (methodName) bank = "%d.%d" % (objId.getBroker(), objId.getBank()) # Encode args according to schema if classId not in self.schema: self.seqMgr.release (sequence) raise ValueError ("Unknown class name: %s" % classId) schemaClass = self.schema[classId] ms = schemaClass['M'] arglist = None for mname in ms: (mdesc, margs) = ms[mname] if mname == methodName: arglist = margs if arglist == None: self.seqMgr.release (sequence) raise ValueError ("Unknown method name: %s" % methodName) for arg in arglist: if arg[2].find("I") != -1: value = arg[8] # default if arg[0] in args: value = args[arg[0]] if value == None: self.seqMgr.release (sequence) raise ValueError ("Missing non-defaulted argument: %s" % arg[0]) self.encodeValue (codec, value, arg[1]) packageName = classId[0] className = classId[1] msg = channel.message(codec.encoded, "agent." + bank) channel.send ("qpid.management", msg)
def encode_command(self, cmd): sc = StringCodec() sc.write_uint16(cmd.CODE) sc.write_compound(Header(sync=cmd.sync)) sc.write_fields(cmd) return sc.encoded
def encode_compound(self, op): sc = StringCodec() sc.write_compound(op) return sc.encoded
def decode_headers(self, encoded): sc = StringCodec(encoded) result = [] while sc.encoded: result.append(sc.read_struct32()) return result
def encode(x): sc = StringCodec() sc.write_primitive(type, x) return sc.encoded
def decode(x): sc = StringCodec(x) return sc.read_primitive(type)