X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fafb-wsj1.c;h=df4a23443acfbbc4a5bcf417558f73963466a911;hb=8bfe628281a73708d35a6c6252c646c51b404484;hp=0a7dfd80d776582e5cbd1cbb39a9520da7681673;hpb=7b97a7f27578d7f4ce7cc994e5df303ac5d9c886;p=src%2Fapp-framework-binder.git diff --git a/src/afb-wsj1.c b/src/afb-wsj1.c index 0a7dfd80..df4a2344 100644 --- a/src/afb-wsj1.c +++ b/src/afb-wsj1.c @@ -1,5 +1,5 @@ /* - * Copyright 2016 IoT.bzh + * Copyright (C) 2016 "IoT.bzh" * Author: José Bollo * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -34,8 +34,8 @@ #define RETERR 4 #define EVENT 5 -static void wsj1_on_hangup(struct afb_wsj1 *ws); -static void wsj1_on_text(struct afb_wsj1 *ws, char *text, size_t size); +static void wsj1_on_hangup(struct afb_wsj1 *wsj1); +static void wsj1_on_text(struct afb_wsj1 *wsj1, char *text, size_t size); static struct afb_ws_itf wsj1_itf = { .on_hangup = (void*)wsj1_on_hangup, @@ -127,10 +127,10 @@ void afb_wsj1_unref(struct afb_wsj1 *wsj1) } } -static void wsj1_on_hangup(struct afb_wsj1 *ws) +static void wsj1_on_hangup(struct afb_wsj1 *wsj1) { - if (ws->itf->on_hangup != NULL) - ws->itf->on_hangup(ws->closure); + if (wsj1->itf->on_hangup != NULL) + wsj1->itf->on_hangup(wsj1->closure, wsj1); } @@ -242,7 +242,7 @@ static void wsj1_on_text(struct afb_wsj1 *wsj1, char *text, size_t size) size_t items[10][2]; int n; struct afb_wsj1_msg *msg; - struct wsj1_call *call; + struct wsj1_call *call = NULL; /* allocate */ msg = calloc(1, sizeof *msg); @@ -302,7 +302,8 @@ static void wsj1_on_text(struct afb_wsj1 *wsj1, char *text, size_t size) afb_wsj1_addref(wsj1); msg->wsj1 = wsj1; msg->next = wsj1->messages; - msg->next->previous = msg; + if (msg->next != NULL) + msg->next->previous = msg; wsj1->messages = msg; /* incoke the handler */ @@ -418,90 +419,11 @@ const char *afb_wsj1_msg_token(struct afb_wsj1_msg *msg) return msg->token; } - - - - - - - - - -#if 0 - - - - - -static void wsj1_emit(struct afb_wsj1 *wsj1, int code, const char *id, size_t idlen, struct json_object *data, const char *token) -{ - json_object *msg; - const char *txt; - - /* pack the message */ - msg = json_object_new_array(); - json_object_array_add(msg, json_object_new_int(code)); - json_object_array_add(msg, json_object_new_string_len(id, (int)idlen)); - json_object_array_add(msg, data); - if (token) - json_object_array_add(msg, json_object_new_string(token)); - - /* emits the reply */ - txt = json_object_to_json_string(msg); - afb_ws_text(wsj1->ws, txt, strlen(txt)); - json_object_put(msg); -} - -static void wsj1_msg_reply(struct afb_wsj1_msg *msg, int retcode, const char *status, const char *info, json_object *resp) -{ - const char *token = afb_context_sent_token(&msg->context); - wsj1_emit(msg->wsj1, retcode, msg->id, msg->idlen, afb_msg_json_reply(status, info, resp, token, NULL), token); -} - -static void wsj1_msg_fail(struct afb_wsj1_msg *msg, const char *status, const char *info) -{ - wsj1_msg_reply(msg, RETERR, status, info, NULL); -} - -static void wsj1_msg_success(struct afb_wsj1_msg *msg, json_object *obj, const char *info) +struct afb_wsj1 *afb_wsj1_msg_wsj1(struct afb_wsj1_msg *msg) { - wsj1_msg_reply(msg, RETOK, "success", info, obj); + return msg->wsj1; } -static const char *wsj1_msg_raw(struct afb_wsj1_msg *msg, size_t *size) -{ - *size = msg->objlen; - return msg->obj; -} - -static void wsj1_msg_send(struct afb_wsj1_msg *msg, const char *buffer, size_t size) -{ - afb_ws_text(msg->wsj1->ws, buffer, size); -} - -static void wsj1_send_event(struct afb_wsj1 *wsj1, const char *event, struct json_object *object) -{ - wsj1_emit(wsj1, EVENT, event, strlen(event), afb_msg_json_event(event, object), NULL); -} - - - - - - - - - - - - - - - - -#endif - - static int wsj1_send_isot(struct afb_wsj1 *wsj1, int i1, const char *s1, const char *o1, const char *t1) { char code[2] = { (char)('0' + i1), 0 };