Exemple #1
0
 def decode_control(self, encoded):
     sc = StringCodec(encoded)
     code = sc.read_uint16()
     cls = CONTROLS[code]
     ctl = cls()
     sc.read_fields(ctl)
     return ctl
Exemple #2
0
 def decode_control(self, encoded):
   sc = StringCodec(encoded)
   code = sc.read_uint16()
   cls = CONTROLS[code]
   ctl = cls()
   sc.read_fields(ctl)
   return ctl
Exemple #3
0
 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)
Exemple #4
0
 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)
Exemple #5
0
 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
Exemple #6
0
    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)
Exemple #7
0
  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)
Exemple #8
0
  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)
Exemple #9
0
    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)
Exemple #10
0
 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
Exemple #11
0
    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)
Exemple #12
0
  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)
Exemple #13
0
 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
Exemple #14
0
 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
Exemple #15
0
 def encode_compound(self, op):
   sc = StringCodec()
   sc.write_compound(op)
   return sc.encoded
Exemple #16
0
 def decode_headers(self, encoded):
   sc = StringCodec(encoded)
   result = []
   while sc.encoded:
     result.append(sc.read_struct32())
   return result
Exemple #17
0
 def decode_headers(self, encoded):
     sc = StringCodec(encoded)
     result = []
     while sc.encoded:
         result.append(sc.read_struct32())
     return result
Exemple #18
0
 def encode(x):
   sc = StringCodec()
   sc.write_primitive(type, x)
   return sc.encoded
Exemple #19
0
 def decode(x):
   sc = StringCodec(x)
   return sc.read_primitive(type)
Exemple #20
0
 def encode_compound(self, op):
     sc = StringCodec()
     sc.write_compound(op)
     return sc.encoded