1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
use crate::binary::Encoder;
use crate::error_codes::UNKNOWN_EXCEPTION;
use crate::errors::Error;
use crate::protocols::*;
pub struct ExceptionResponse {}
impl ExceptionResponse {
pub fn write(encoder: &mut Encoder, error: &Error, with_stack_trace: bool) {
let mut code = UNKNOWN_EXCEPTION;
let name = error.exception_name();
let mut stack_trace = "".to_string();
let mut message = error.to_string();
if let Error::Server(e) = error {
code = e.code;
if with_stack_trace {
stack_trace = e.stack_trace.clone();
}
message = e.message.clone();
}
encoder.uvarint(SERVER_EXCEPTION);
encoder.write(code);
encoder.string(name);
encoder.string(message);
encoder.string(stack_trace);
encoder.write(false);
}
}