def sendCotainer(self, container): """ Convenience method for publishing when data is sent """ # TODO: Publish COMASTER, STATE, DATA assert isinstance(container, Container) data = self.construct.build(container) self.logger.info("%s >> %s", self.state, upperhexstr(data)) self.transport.write(data)
def dataReceived(self, data): """ Called when data is available. It'll callback the Deferred that are waiting for input if it can reasseble a mara frame. """ self.logger.info("%s << %s", self.state, upperhexstr(data)) # Add data that could be chunked to the buffer self.input_buffer += data # If a package is ready (has SOF, QTY, ...) then it must be # parsed with self.construct reference. if self.input_buffer.has_package(): if self.incomingDefered: raw_package_data = self.input_buffer.get_package() try: parsed = self.construct.parse(raw_package_data) except FieldError: self.incomingDefered.errback(FieldError(raw_package_data)) else: self.incomingDefered.callback((raw_package_data, parsed)) else: package = self.input_buffer.get_package() self.logger.info("Unexpected package %s", upperhexstr(package))