diff options
| author | DanielGavin <danielgavin5@hotmail.com> | 2020-11-07 15:44:30 +0100 |
|---|---|---|
| committer | DanielGavin <danielgavin5@hotmail.com> | 2020-11-07 15:44:30 +0100 |
| commit | 6ec424ed8d34cf8a5f51e277a20429741b33ee96 (patch) | |
| tree | 6d0eed732e01d19effbae5cc525a9c2f6e28534f /src/server/response.odin | |
| parent | 3f1027bd4003cdb9fdc80665548181df2fb60810 (diff) | |
complete refractor of the project into packages
Diffstat (limited to 'src/server/response.odin')
| -rw-r--r-- | src/server/response.odin | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/src/server/response.odin b/src/server/response.odin new file mode 100644 index 0000000..bd7a77e --- /dev/null +++ b/src/server/response.odin @@ -0,0 +1,68 @@ +package server + + +import "core:fmt" +import "core:encoding/json" + +send_notification :: proc(notification: Notification, writer: ^Writer) -> bool { + + data, error := json.marshal(notification, context.temp_allocator); + + header := fmt.tprintf("Content-Length: {}\r\n\r\n", len(data)); + + if error != json.Marshal_Error.None { + return false; + } + + if(!write_sized(writer, transmute([]u8)header)) { + return false; + } + + if(!write_sized(writer, data)) { + return false; + } + + return true; +} + +send_response :: proc(response: ResponseMessage, writer: ^Writer) -> bool { + + data, error := json.marshal(response, context.temp_allocator); + + header := fmt.tprintf("Content-Length: {}\r\n\r\n", len(data)); + + if error != json.Marshal_Error.None { + return false; + } + + if(!write_sized(writer, transmute([]u8)header)) { + return false; + } + + if(!write_sized(writer, data)) { + return false; + } + + return true; +} + +send_error :: proc(response: ResponseMessageError, writer: ^Writer) -> bool { + + data, error := json.marshal(response, context.temp_allocator); + + header := fmt.tprintf("Content-Length: {}\r\n\r\n", len(data)); + + if error != json.Marshal_Error.None { + return false; + } + + if(!write_sized(writer, transmute([]u8)header)) { + return false; + } + + if(!write_sized(writer, data)) { + return false; + } + + return true; +} |