示例#1
0
    def handle(self):
        self.logger.debug("slim request handle started")
        self.wfile.write(b'Slim -- V0.3\n')

        running = True
        while running:
            instructionLength = int(self.rfile.read(6))
            self.rfile.read(1)
            instructions = self.rfile.read(instructionLength).decode('utf-8')
            self.logger.debug("len={} data={}".format(instructionLength,
                                                      instructions))

            if instructions == 'bye':
                self.logger.debug("'bye' received")
                running = False
            else:
                statements = ListDeserializer.deserialize(instructions)
                self.executor = ListExecutor()
                results = self.executor.execute(statements)
                x = ListSerializer.serialize(results)
                response = '%06d:%s' % (len(x), x)
                self.logger.debug("reponse={}".format(response))
                self.wfile.write(response.encode('utf-8'))

        self.logger.debug("server shutdown requested")
        self.server.done()
示例#2
0
 def handle(self):
     self.wfile.write('Slim -- V0.0\n')
     while True:
         instructionLength = int(self.rfile.read(6))
         self.rfile.read(1)
         instructions = self.rfile.read(instructionLength)
         if instructions == 'bye':
             return
         log('instructions {%s}' % instructions)
         statements = ListDeserializer.deserialize(instructions)
         self.executor = ListExecutor()
         results = self.executor.execute(statements)
         x = ListSerializer.serialize(results)
         log(x)
         self.wfile.write('%06d:%s' % (len(x), x))
示例#3
0
 def handle(self):
     self.wfile.write('Slim -- V0.0\n')
     while True:
         instructionLength = int(self.rfile.read(6))
         self.rfile.read(1)
         instructions = self.rfile.read(instructionLength)
         if instructions == 'bye':
             return
         log('instructions {%s}' % instructions)
         statements = ListDeserializer.deserialize(instructions)
         self.executor = ListExecutor()
         results = self.executor.execute(statements)
         x = ListSerializer.serialize(results)
         log(x)
         self.wfile.write('%06d:%s' % (len(x), x))
示例#4
0
 def dataReceived(self, data):
     #log('dataReceived ' + data)
     try:
         self.file = FileAdapter(data)
         instructionLength = int(self.file.read(6))
         self.file.read(1)
         instructions = self.file.read(instructionLength)
         if instructions == 'bye':
             #self.transport.loseConnection()
             reactor.stop()
             return
         log('instructions {%s}' % instructions)
         statements = ListDeserializer.deserialize(instructions)
         self.executor = ListExecutor()
         results = self.executor.execute(statements)
         x = ListSerializer.serialize(results)
         log(x)
         self.transport.write('%06d:%s' % (len(x), x))
     except Exception, e:
         log(traceback.format_exc())
 def check(self):
     serialized = ListSerializer.serialize(self.data)
     deserialized = deserialize(serialized)
     self.assertEquals(self.data, deserialized)
示例#6
0
 def testNullListSerialize(self):
     self.assertEquals("[000000:]", ListSerializer.serialize(self.data))
示例#7
0
 def testSerializeNullElement(self):
     data = [ None ]
     s = ListSerializer.serialize(data);
     self.assertEquals("[000001:000004:null:]", s)
示例#8
0
 def testSerializeListWithNonString(self):
     s = ListSerializer.serialize([ 1 ])
示例#9
0
 def testSerializeNestedList(self):
     sublist = []
     sublist.append("element")
     self.data.append(sublist)
     self.assertEquals("[000001:000024:[000001:000007:element:]:]", ListSerializer.serialize(self.data))
示例#10
0
 def testTwoItemListSerialize(self):
     self.data.append("hello")
     self.data.append("world")
     self.assertEquals("[000002:000005:hello:000005:world:]", ListSerializer.serialize(self.data))
示例#11
0
 def testOneItemListSerialize(self):
     self.data.append("hello")
     self.assertEquals("[000001:000005:hello:]", ListSerializer.serialize(self.data))