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()
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))
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)
def testNullListSerialize(self): self.assertEquals("[000000:]", ListSerializer.serialize(self.data))
def testSerializeNullElement(self): data = [ None ] s = ListSerializer.serialize(data); self.assertEquals("[000001:000004:null:]", s)
def testSerializeListWithNonString(self): s = ListSerializer.serialize([ 1 ])
def testSerializeNestedList(self): sublist = [] sublist.append("element") self.data.append(sublist) self.assertEquals("[000001:000024:[000001:000007:element:]:]", ListSerializer.serialize(self.data))
def testTwoItemListSerialize(self): self.data.append("hello") self.data.append("world") self.assertEquals("[000002:000005:hello:000005:world:]", ListSerializer.serialize(self.data))
def testOneItemListSerialize(self): self.data.append("hello") self.assertEquals("[000001:000005:hello:]", ListSerializer.serialize(self.data))