MCPcopy Create free account
hub / github.com/f0rr0/oliphaunt / handle_packet

Method handle_packet

src/protocol/parser.rs:86–119  ·  view source on GitHub ↗
(&self, code: u8, bytes: &[u8], length: usize)

Source from the content-addressed store, hash-verified

84 }
85
86 fn handle_packet(&self, code: u8, bytes: &[u8], length: usize) -> Result<BackendMessage> {
87 let mut reader = BufferReader::default();
88 reader.set_buffer(0, bytes);
89
90 match code {
91 CODE_BIND_COMPLETE => Ok(BackendMessage::BindComplete { length: 5 }),
92 CODE_PARSE_COMPLETE => Ok(BackendMessage::ParseComplete { length: 5 }),
93 CODE_CLOSE_COMPLETE => Ok(BackendMessage::CloseComplete { length: 5 }),
94 CODE_NO_DATA => Ok(BackendMessage::NoData { length: 5 }),
95 CODE_PORTAL_SUSPENDED => Ok(BackendMessage::PortalSuspended { length: 5 }),
96 CODE_COPY_DONE => Ok(BackendMessage::CopyDone { length: 4 }),
97 CODE_REPLICATION_START => Ok(BackendMessage::ReplicationStart { length: 4 }),
98 CODE_EMPTY_QUERY => Ok(BackendMessage::EmptyQuery { length: 4 }),
99 CODE_COMMAND_COMPLETE => self.parse_command_complete(length, &mut reader),
100 CODE_READY_FOR_QUERY => self.parse_ready_for_query(length, &mut reader),
101 CODE_DATA_ROW => self.parse_data_row(length, &mut reader),
102 CODE_NOTIFICATION_RESPONSE => self.parse_notification(length, &mut reader),
103 CODE_PARAMETER_STATUS => self.parse_parameter_status(length, &mut reader),
104 CODE_BACKEND_KEY_DATA => self.parse_backend_key_data(length, &mut reader),
105 CODE_ERROR => self.parse_error_message(length, &mut reader),
106 CODE_NOTICE => self.parse_notice_message(length, &mut reader),
107 CODE_ROW_DESCRIPTION => self.parse_row_description(length, &mut reader),
108 CODE_PARAMETER_DESCRIPTION => self.parse_parameter_description(length, &mut reader),
109 CODE_COPY_IN => {
110 self.parse_copy_message(length, &mut reader, MessageName::CopyInResponse)
111 }
112 CODE_COPY_OUT => {
113 self.parse_copy_message(length, &mut reader, MessageName::CopyOutResponse)
114 }
115 CODE_COPY_DATA => self.parse_copy_data(length, bytes),
116 CODE_AUTHENTICATION => self.parse_authentication(length, &mut reader),
117 _ => Err(anyhow!("received invalid response: {:x}", code)),
118 }
119 }
120
121 fn parse_ready_for_query(
122 &self,

Callers 1

parseMethod · 0.80

Calls 14

set_bufferMethod · 0.80
parse_ready_for_queryMethod · 0.80
parse_data_rowMethod · 0.80
parse_notificationMethod · 0.80
parse_error_messageMethod · 0.80
parse_notice_messageMethod · 0.80
parse_row_descriptionMethod · 0.80
parse_copy_messageMethod · 0.80

Tested by

no test coverage detected