def process_message(self, message): if isinstance(message, messages.ErrorResponse): raise errors.ConnectionError(message.error_message()) elif isinstance(message, messages.NoticeResponse): if getattr(self, 'notice_handler', None) is not None: self.notice_handler(message) elif isinstance(message, messages.BackendKeyData): self.backend_pid = message.pid self.backend_key = message.key elif isinstance(message, messages.ParameterStatus): self.parameters[message.name] = message.value elif isinstance(message, messages.ReadyForQuery): self.transaction_status = message.transaction_status elif isinstance(message, messages.CommandComplete): # TODO: im not ever seeing this actually returned by vertica... # if vertica returns a row count, set the rowcount attribute in cursor #if hasattr(message, 'rows'): # self.cursor.rowcount = message.rows pass elif isinstance(message, messages.EmptyQueryResponse): pass elif isinstance(message, messages.CopyInResponse): pass else: raise errors.MessageError("Unhandled message: {0}".format(message)) # set last message self._cursor._message = message
def read_message(self): try: type_ = self.read_bytes(1) size = unpack('!I', self.read_bytes(4))[0] if size < 4: raise errors.MessageError("Bad message size: {0}".format(size)) message = BackendMessage.factory(type_, self.read_bytes(size - 4)) logger.debug('<= %s', message) return message except (SystemError, IOError) as e: self.close_socket() raise errors.ConnectionError(str(e))
def process_message(self, message): if isinstance(message, messages.ErrorResponse): raise errors.ConnectionError(message.error_message()) elif isinstance(message, messages.NoticeResponse): if getattr(self, 'notice_handler', None) is not None: self.notice_handler(message) elif isinstance(message, messages.BackendKeyData): self.backend_pid = message.pid self.backend_key = message.key elif isinstance(message, messages.ParameterStatus): self.parameters[message.name] = message.value elif isinstance(message, messages.ReadyForQuery): self.transaction_status = message.transaction_status else: raise errors.MessageError("Unhandled message: {0}".format(message))
def read_message(self): try: ready = select.select([self._socket()], [], [], self.options['read_timeout']) if len(ready[0]) > 0: type = self.read_bytes(1) size = unpack('!I', self.read_bytes(4))[0] if size < 4: raise errors.MessageError( "Bad message size: {0}".format(size)) message = BackendMessage.factory(type, self.read_bytes(size - 4)) if getattr(self, 'debug', False): print "<= {0}".format(message) return message else: self.close() raise errors.TimedOutError("Connection timed out") except Exception as e: self.close_socket() raise errors.ConnectionError(e.message)