MCPcopy Create free account
hub / github.com/HFQR/xitca-web / encode

Method encode

http-ws/src/codec.rs:138–176  ·  view source on GitHub ↗
(&mut self, item: Message, dst: &mut BytesMut)

Source from the content-addressed store, hash-verified

136
137impl Codec {
138 pub fn encode(&mut self, item: Message, dst: &mut BytesMut) -> Result<(), ProtocolError> {
139 if self.send_closed() {
140 return Err(ProtocolError::SendClosed);
141 }
142
143 let mask = !self.flags.contains(Flags::SERVER);
144
145 match item {
146 Message::Text(bytes) => Parser::write_message(dst, bytes, OpCode::Text, true, mask),
147 Message::Binary(bytes) => Parser::write_message(dst, bytes, OpCode::Binary, true, mask),
148 Message::Ping(bytes) => Parser::write_message(dst, bytes, OpCode::Ping, true, mask),
149 Message::Pong(bytes) => Parser::write_message(dst, bytes, OpCode::Pong, true, mask),
150 Message::Close(reason) => {
151 Parser::write_close(dst, reason, mask);
152 self.set_send_closed();
153 }
154 Message::Continuation(cont) => match cont {
155 Item::Continue(_) | Item::Last(_) if !self.flags.contains(Flags::CONTINUATION) => {
156 return Err(ProtocolError::ContinuationNotStarted);
157 }
158 Item::FirstText(ref data) => {
159 self.try_start_continue()?;
160 Parser::write_message(dst, data, OpCode::Text, false, mask);
161 }
162 Item::FirstBinary(ref data) => {
163 self.try_start_continue()?;
164 Parser::write_message(dst, data, OpCode::Binary, false, mask);
165 }
166 Item::Continue(ref data) => Parser::write_message(dst, data, OpCode::Continue, false, mask),
167 Item::Last(ref data) => {
168 self.flags.remove(Flags::CONTINUATION);
169 Parser::write_message(dst, data, OpCode::Continue, true, mask);
170 }
171 },
172 Message::Nop => {}
173 }
174
175 Ok(())
176 }
177
178 pub fn decode(&mut self, src: &mut BytesMut) -> Result<Option<Message>, ProtocolError> {
179 if self.recv_closed() {

Callers 6

sendMethod · 0.45
start_sendMethod · 0.45
start_sendMethod · 0.45
send_bodyFunction · 0.45
sendMethod · 0.45
encode_tls_dataFunction · 0.45

Calls 5

send_closedMethod · 0.80
set_send_closedMethod · 0.80
try_start_continueMethod · 0.80
containsMethod · 0.45
removeMethod · 0.45

Tested by

no test coverage detected