#include <string.h>
#include <cstdarg>
#include "hs-helper.h"
+#include <unistd.h>
const char* evlist[] = {
"tap_shortcut",
"on_screen_message",
"on_screen_reply",
+ "showWindow",
+ "hideWindow",
+ "replyShowWindow",
+ "showNotification",
+ "showInformation",
+ "application-list-changed",
+ "registerShortcut",
+ "updateShortcut",
"reserved"
};
-
-REQ_ERROR get_value_uint16(const struct afb_req request, const char *source, uint16_t *out_id)
+/**
+ * get uint16 value from source
+ *
+ * #### Parameters
+ * - request : Describes the request by bindings from afb-daemon
+ * - source : input source
+ * - out_id : output uint16 value
+ *
+ * #### Return
+ * error code
+ *
+ */
+REQ_ERROR get_value_uint16(const afb_req_t request, const char *source, uint16_t *out_id)
{
char* endptr;
const char* tmp = afb_req_value (request, source);
return REQ_OK;
}
-REQ_ERROR get_value_int16(const struct afb_req request, const char *source, int16_t *out_id)
+/**
+ * get int16 value from source
+ *
+ * #### Parameters
+ * - request : Describes the request by bindings from afb-daemon
+ * - source : input source
+ * - out_id : output int16 value
+ *
+ * #### Return
+ * error code
+ *
+ */
+REQ_ERROR get_value_int16(const afb_req_t request, const char *source, int16_t *out_id)
{
char* endptr;
const char* tmp = afb_req_value (request, source);
return REQ_OK;
}
-REQ_ERROR get_value_int32(const struct afb_req request, const char *source, int32_t *out_id)
+/**
+ * get int32 value from source
+ *
+ * #### Parameters
+ * - request : Describes the request by bindings from afb-daemon
+ * - source : input source
+ * - out_id : output int32 value
+ *
+ * #### Return
+ * error code
+ *
+ */
+REQ_ERROR get_value_int32(const afb_req_t request, const char *source, int32_t *out_id)
{
char* endptr;
const char* tmp = afb_req_value (request, source);
return REQ_OK;
}
+/**
+ * add int object to json object
+ *
+ * #### Parameters
+ * - j_obj : the json object will join in int json object
+ * - count : input parameter number
+ * - ... : parameter list
+ *
+ * #### Return
+ * None
+ *
+ */
void hs_add_object_to_json_object(struct json_object* j_obj, int count,...)
{
va_list args;
va_end(args);
}
+/**
+ * add string object to json object
+ *
+ * #### Parameters
+ * - j_obj : the json object will join in string json object
+ * - count : input parameter number
+ * - ... : parameter list
+ *
+ * #### Return
+ * None
+ *
+ */
void hs_add_object_to_json_object_str(struct json_object* j_obj, int count,...)
{
va_list args;
va_end(args);
}
-
+/**
+ * add new json object to json object
+ *
+ * #### Parameters
+ * - j_obj : the json object will join in new json object
+ * - verb_name : new json object's verb value
+ * - count : input parameter number
+ * - ... : parameter list
+ *
+ * #### Return
+ * None
+ *
+ */
void hs_add_object_to_json_object_func(struct json_object* j_obj, const char* verb_name, int count, ...)
{
va_list args;
va_end(args);
}
+/**
+ * search event position in event list
+ *
+ * #### Parameters
+ * - value : searched event name
+ *
+ * #### Return
+ * event's index in event list
+ *
+ */
int hs_search_event_name_index(const char* value)
{
size_t buf_size = 50;
}
return ret;
}
+
+/**
+ * get application id from request
+ *
+ * #### Parameters
+ * - request : the request
+ *
+ * #### Return
+ * got application id
+ *
+ */
+std::string get_application_id(const afb_req_t request)
+{
+ std::string appid;
+ char *app_id = afb_req_get_application_id(request);
+ if(app_id == nullptr) {
+ appid = std::string("");
+ }
+ else {
+ appid = std::string(app_id);
+ free(app_id);
+ }
+
+ return appid;
+}
+
+/**
+ * read json file
+ *
+ * #### Parameters
+ * - file : file name
+ * - obj : json_object
+ *
+ * #### Return
+ * 0 : read success
+ * -1 : read fail
+ *
+ */
+int readJsonFile(const char* file, struct json_object **obj)
+{
+ int ret = -1;
+ FILE *fp = fopen(file, "rb");
+ if(fp == nullptr) {
+ AFB_ERROR("open %s failed", file);
+ return ret;
+ }
+
+ *obj = nullptr;
+ const int buf_size = 128;
+ char buf[buf_size];
+ struct json_tokener *tokener = json_tokener_new();
+ enum json_tokener_error json_error;
+ while(1) {
+ size_t len = fread(buf, sizeof(char), buf_size, fp);
+ *obj = json_tokener_parse_ex(tokener, buf, len);
+ if(nullptr != *obj) {
+ AFB_NOTICE("read %s success", file);
+ ret = 0;
+ break;
+ }
+
+ json_error = json_tokener_get_error(tokener);
+ if ((json_tokener_continue != json_error) || (buf_size > len)) {
+ AFB_ERROR("parse %s error", file);
+ *obj = nullptr;
+ break;
+ }
+ }
+
+ fclose(fp);
+ json_tokener_free(tokener);
+ return ret;
+}
+
+/**
+ * write to json file
+ *
+ * #### Parameters
+ * - file : output file name
+ * - obj : json_object
+ *
+ * #### Return
+ * 0 : write success
+ * -1 : write fail
+ *
+ */
+int writeJsonFile(const char* file, struct json_object *obj)
+{
+ int ret = -1;
+ FILE *fp = fopen(file, "w+");
+ if(fp == nullptr) {
+ AFB_ERROR("open %s failed", file);
+ return ret;
+ }
+
+ const char *str = json_object_to_json_string(obj);
+ size_t len = strlen(str);
+ size_t cnt = fwrite(str, len, 1, fp);
+ if(cnt == 1) {
+ ret = 0;
+ fflush(fp);
+ fsync(fileno(fp));
+ }
+ else {
+ AFB_WARNING("write to %s failed.cnt=%d,len=%d,str=%s", file, cnt, len, str);
+ }
+
+ fclose(fp);
+ return ret;
+}
\ No newline at end of file