aboutsummaryrefslogtreecommitdiff
path: root/src/server/response.odin
diff options
context:
space:
mode:
authorDanielGavin <danielgavin5@hotmail.com>2020-11-07 15:44:30 +0100
committerDanielGavin <danielgavin5@hotmail.com>2020-11-07 15:44:30 +0100
commit6ec424ed8d34cf8a5f51e277a20429741b33ee96 (patch)
tree6d0eed732e01d19effbae5cc525a9c2f6e28534f /src/server/response.odin
parent3f1027bd4003cdb9fdc80665548181df2fb60810 (diff)
complete refractor of the project into packages
Diffstat (limited to 'src/server/response.odin')
-rw-r--r--src/server/response.odin68
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;
+}