aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/samples/HelloWorld.c
diff options
context:
space:
mode:
authorManuel Bachmann <manuel.bachmann@iot.bzh>2015-12-16 11:25:54 +0100
committerManuel Bachmann <manuel.bachmann@iot.bzh>2015-12-16 11:25:54 +0100
commite2d857c5f05f84de8e2642ff9272a80ea9e5fed6 (patch)
tree2df2f5939637de58a4fdad24b5cf0d5b9afd561f /plugins/samples/HelloWorld.c
parent4e43e3b53482bff8cb835271eb3207aeaf593812 (diff)
New tree organization, update CMake req. to 2.8.8.
Use CMake-2.8.8-specific feature to allow building the daemon from various source directories. Signed-off-by: Manuel Bachmann <manuel.bachmann@iot.bzh>
Diffstat (limited to 'plugins/samples/HelloWorld.c')
-rw-r--r--plugins/samples/HelloWorld.c95
1 files changed, 95 insertions, 0 deletions
diff --git a/plugins/samples/HelloWorld.c b/plugins/samples/HelloWorld.c
new file mode 100644
index 00000000..70de03f0
--- /dev/null
+++ b/plugins/samples/HelloWorld.c
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2015 "IoT.bzh"
+ * Author "Fulup Ar Foll"
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include "local-def.h"
+
+STATIC json_object* pingSample (AFB_request *request) {
+ static pingcount = 0;
+ json_object *response;
+ char query [512];
+ int len;
+
+ // request all query key/value
+ len = getQueryAll (request, query, sizeof(query));
+ if (len == 0) strcpy (query,"NoSearchQueryList");
+
+ // check if we have some post data
+ if (request->post == NULL) request->post->data="NoData";
+
+ // return response to caller
+ response = jsonNewMessage(AFB_SUCCESS, "Ping Binder Daemon %d query={%s} PostData: \'%s\' ", pingcount++, query, request->post);
+
+ if (verbose) fprintf(stderr, "%d: \n", pingcount);
+ return (response);
+}
+
+STATIC json_object* pingFail (AFB_request *request) {
+ return NULL;
+}
+
+STATIC json_object* pingBug (AFB_request *request) {
+ int a,b,c;
+
+ fprintf (stderr, "Use --timeout=10 to trap error\n");
+ b=4;
+ c=0;
+ a=b/c;
+
+ // should never return
+ return NULL;
+}
+
+
+// For samples https://linuxprograms.wordpress.com/2010/05/20/json-c-libjson-tutorial/
+STATIC json_object* pingJson (AFB_session *session, AFB_request *request) {
+ json_object *jresp, *embed;
+
+ jresp = json_object_new_object();
+ json_object_object_add(jresp, "myString", json_object_new_string ("Some String"));
+ json_object_object_add(jresp, "myInt", json_object_new_int (1234));
+
+ embed = json_object_new_object();
+ json_object_object_add(embed, "subObjString", json_object_new_string ("Some String"));
+ json_object_object_add(embed, "subObjInt", json_object_new_int (5678));
+
+ json_object_object_add(jresp,"eobj", embed);
+
+ return jresp;
+}
+
+
+STATIC AFB_restapi pluginApis[]= {
+ {"ping" , AFB_SESSION_NONE, (AFB_apiCB)pingSample , "Ping Application Framework"},
+ {"pingnull" , AFB_SESSION_NONE, (AFB_apiCB)pingFail , "Return NULL"},
+ {"pingbug" , AFB_SESSION_NONE, (AFB_apiCB)pingBug , "Do a Memory Violation"},
+ {"pingJson" , AFB_SESSION_NONE, (AFB_apiCB)pingJson , "Return a JSON object"},
+ {"ctx-store", AFB_SESSION_NONE, (AFB_apiCB)pingSample , "Verbose Mode"},
+ {"ctx-load" , AFB_SESSION_NONE, (AFB_apiCB)pingSample , "Verbose Mode"},
+ {NULL}
+};
+
+
+PUBLIC AFB_plugin *dbusRegister () {
+ AFB_plugin *plugin = malloc (sizeof (AFB_plugin));
+ plugin->type = AFB_PLUGIN_JSON;
+ plugin->info = "Application Framework Binder Service";
+ plugin->prefix= "dbus";
+ plugin->apis = pluginApis;
+ return (plugin);
+}; \ No newline at end of file