def reset_builder(self): self.current_builder = MessageBuilder()
class IncomingChannel(Connection): """ Transport connection which consumes messages from message channel, wraps them in producer Envelopes, and enqueues them for asynchronous sending using driven by asyncore. """ LINGER = struct.pack("ii", 0, 0) @debug def __init__(self, dispatcher, connection): super(IncomingChannel, self).__init__(dispatcher.monitor) self.dispatcher = dispatcher self.setup_connection(connection) self.buffer = ByteBuffer() self.setup_builder() @debug def setup_connection(self, connection): self.connection = connection self.set_socket(self.connection, self.monitor) # Ensure that we never block waiting for a socket to close. self.connection.setsockopt(SOL_SOCKET, SO_LINGER, self.LINGER) @debug def setup_builder(self): self.reset_builder() self.set_terminator(self.current_builder.get_terminator()) @debug def reset_builder(self): self.current_builder = MessageBuilder() @debug def collect_incoming_data(self, bytes): self.buffer.write(bytes) @debug def found_terminator(self): self.current_builder.write(self.buffer.read()) if self.current_builder.iscomplete(): self.dispatcher.dispatch(self.current_builder.message()) self.reset_builder() self.set_terminator(self.current_builder.get_terminator()) @debug def connect(self, address): raise TypeError("connect() called on server channel") @debug def handle_connect(self): pass @debug def handle_close(self): super(IncomingChannel, self).handle_close() self.dispatcher.closed(self) @debug def push(self, message): raise TypeError("push() called on server channel") @debug def push_with_producer(self, envelope): raise TypeError("push_with_producer() called on server channel") @debug def writable(self): return False @debug def readable(self): return True @debug def send(self, data): raise TypeError("send() called on server channel") @debug def recv(self, bufsize): return super(IncomingChannel, self).recv(bufsize) @debug def handle_expt(self): message = "%s handling exceptoinal event: closing." msglog.log("broadway", message % self, msglog.types.WARN) self.close()
class IncomingChannel(Connection): """ Transport connection which consumes messages from message channel, wraps them in producer Envelopes, and enqueues them for asynchronous sending using driven by asyncore. """ LINGER = struct.pack("ii",0,0) @debug def __init__(self, dispatcher, connection): super(IncomingChannel, self).__init__(dispatcher.monitor) self.dispatcher = dispatcher self.setup_connection(connection) self.buffer = ByteBuffer() self.setup_builder() @debug def setup_connection(self, connection): self.connection = connection self.set_socket(self.connection, self.monitor) # Ensure that we never block waiting for a socket to close. self.connection.setsockopt(SOL_SOCKET, SO_LINGER, self.LINGER) @debug def setup_builder(self): self.reset_builder() self.set_terminator(self.current_builder.get_terminator()) @debug def reset_builder(self): self.current_builder = MessageBuilder() @debug def collect_incoming_data(self, bytes): self.buffer.write(bytes) @debug def found_terminator(self): self.current_builder.write(self.buffer.read()) if self.current_builder.iscomplete(): self.dispatcher.dispatch(self.current_builder.message()) self.reset_builder() self.set_terminator(self.current_builder.get_terminator()) @debug def connect(self, address): raise TypeError("connect() called on server channel") @debug def handle_connect(self): pass @debug def handle_close(self): super(IncomingChannel, self).handle_close() self.dispatcher.closed(self) @debug def push(self, message): raise TypeError("push() called on server channel") @debug def push_with_producer(self, envelope): raise TypeError("push_with_producer() called on server channel") @debug def writable(self): return False @debug def readable(self): return True @debug def send(self, data): raise TypeError("send() called on server channel") @debug def recv(self, bufsize): return super(IncomingChannel, self).recv(bufsize) @debug def handle_expt(self): message = "%s handling exceptoinal event: closing." msglog.log("broadway", message % self, msglog.types.WARN) self.close()