diff options
Diffstat (limited to 'bindings/tutorial')
-rw-r--r-- | bindings/tutorial/CMakeLists.txt | 38 | ||||
-rw-r--r-- | bindings/tutorial/export.map | 1 | ||||
-rw-r--r-- | bindings/tutorial/tuto-1.c | 19 | ||||
-rw-r--r-- | bindings/tutorial/tuto-2.c | 100 | ||||
-rw-r--r-- | bindings/tutorial/tuto-3.cpp | 95 | ||||
-rw-r--r-- | bindings/tutorial/tuto-4.c | 29 | ||||
-rw-r--r-- | bindings/tutorial/tuto-5.cpp | 93 | ||||
-rw-r--r-- | bindings/tutorial/tuto-app1.c | 30 |
8 files changed, 0 insertions, 405 deletions
diff --git a/bindings/tutorial/CMakeLists.txt b/bindings/tutorial/CMakeLists.txt deleted file mode 100644 index f05fa541..00000000 --- a/bindings/tutorial/CMakeLists.txt +++ /dev/null @@ -1,38 +0,0 @@ -########################################################################### -# Copyright (C) 2015-2019 "IoT.bzh" -# -# author: José Bollo <jose.bollo@iot.bzh> -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -########################################################################### - - -#INCLUDE_DIRECTORIES(${include_dirs}) - -MACRO(tuto num ext) - ADD_LIBRARY(tuto-${num} MODULE tuto-${num}.${ext}) - SET_TARGET_PROPERTIES(tuto-${num} PROPERTIES - PREFIX "" - LINK_FLAGS "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/export.map" - ) - TARGET_LINK_LIBRARIES(tuto-${num} ${link_libraries}) -ENDMACRO(tuto) - - -tuto(1 c) -tuto(2 c) -tuto(3 cpp) -tuto(4 c) -tuto(5 cpp) - -tuto(app1 c) diff --git a/bindings/tutorial/export.map b/bindings/tutorial/export.map deleted file mode 100644 index ee2f4133..00000000 --- a/bindings/tutorial/export.map +++ /dev/null @@ -1 +0,0 @@ -{ global: afbBindingV*; local: *; }; diff --git a/bindings/tutorial/tuto-1.c b/bindings/tutorial/tuto-1.c deleted file mode 100644 index 1f58be6c..00000000 --- a/bindings/tutorial/tuto-1.c +++ /dev/null @@ -1,19 +0,0 @@ -#define AFB_BINDING_VERSION 3 -#include <afb/afb-binding.h> - -void hello(afb_req_t req) -{ - AFB_REQ_DEBUG(req, "hello world"); - afb_req_reply(req, NULL, NULL, "hello world"); -} - -const afb_verb_t verbs[] = { - { .verb="hello", .callback=hello }, - { .verb=NULL } -}; - -const afb_binding_t afbBindingExport = { - .api = "tuto-1", - .verbs = verbs -}; - diff --git a/bindings/tutorial/tuto-2.c b/bindings/tutorial/tuto-2.c deleted file mode 100644 index 10797081..00000000 --- a/bindings/tutorial/tuto-2.c +++ /dev/null @@ -1,100 +0,0 @@ -#include <string.h> -#include <json-c/json.h> - -#define AFB_BINDING_VERSION 3 -#include <afb/afb-binding.h> - -afb_event_t event_login, event_logout; - -void login(afb_req_t req) -{ - json_object *args, *user, *passwd; - char *usr; - - args = afb_req_json(req); - if (!json_object_object_get_ex(args, "user", &user) - || !json_object_object_get_ex(args, "password", &passwd)) { - AFB_REQ_ERROR(req, "login, bad request: %s", json_object_get_string(args)); - afb_req_reply(req, NULL, "bad-request", NULL); - } else if (afb_req_context_get(req)) { - AFB_REQ_ERROR(req, "login, bad state, logout first"); - afb_req_reply(req, NULL, "bad-state", NULL); - } else if (strcmp(json_object_get_string(passwd), "please")) { - AFB_REQ_ERROR(req, "login, unauthorized: %s", json_object_get_string(args)); - afb_req_reply(req, NULL, "unauthorized", NULL); - } else { - usr = strdup(json_object_get_string(user)); - AFB_REQ_NOTICE(req, "login user: %s", usr); - afb_req_session_set_LOA(req, 1); - afb_req_context_set(req, usr, free); - afb_req_reply(req, NULL, NULL, NULL); - afb_event_push(event_login, json_object_new_string(usr)); - } -} - -void action(afb_req_t req) -{ - json_object *args, *val; - char *usr; - - args = afb_req_json(req); - usr = afb_req_context_get(req); - AFB_REQ_NOTICE(req, "action for user %s: %s", usr, json_object_get_string(args)); - if (json_object_object_get_ex(args, "subscribe", &val)) { - if (json_object_get_boolean(val)) { - AFB_REQ_NOTICE(req, "user %s subscribes to events", usr); - afb_req_subscribe(req, event_login); - afb_req_subscribe(req, event_logout); - } else { - AFB_REQ_NOTICE(req, "user %s unsubscribes to events", usr); - afb_req_unsubscribe(req, event_login); - afb_req_unsubscribe(req, event_logout); - } - } - afb_req_reply(req, json_object_get(args), NULL, NULL); -} - -void logout(afb_req_t req) -{ - char *usr; - - usr = afb_req_context_get(req); - AFB_REQ_NOTICE(req, "login user %s out", usr); - afb_event_push(event_logout, json_object_new_string(usr)); - afb_req_session_set_LOA(req, 0); - afb_req_context_clear(req); - afb_req_reply(req, NULL, NULL, NULL); -} - -int preinit(afb_api_t api) -{ - AFB_API_NOTICE(api, "preinit"); - return 0; -} - -int init(afb_api_t api) -{ - AFB_API_NOTICE(api, "init"); - event_login = afb_api_make_event(api, "login"); - event_logout = afb_api_make_event(api, "logout"); - if (afb_event_is_valid(event_login) && afb_event_is_valid(event_logout)) - return 0; - AFB_API_ERROR(api, "Can't create events"); - return -1; -} - -const afb_verb_t verbs[] = { - { .verb="login", .callback=login }, - { .verb="action", .callback=action, .session=AFB_SESSION_LOA_1 }, - { .verb="logout", .callback=logout, .session=AFB_SESSION_LOA_1 }, - { .verb=NULL } -}; - -const afb_binding_t afbBindingExport = { - .api = "tuto-2", - .specification = NULL, - .verbs = verbs, - .preinit = preinit, - .init = init, - .noconcurrency = 0 -};
\ No newline at end of file diff --git a/bindings/tutorial/tuto-3.cpp b/bindings/tutorial/tuto-3.cpp deleted file mode 100644 index 8ad69ef3..00000000 --- a/bindings/tutorial/tuto-3.cpp +++ /dev/null @@ -1,95 +0,0 @@ -#include <string.h> -#include <json-c/json.h> - -#define AFB_BINDING_VERSION 3 -#include <afb/afb-binding> - -afb::event event_login, event_logout; - -void login(afb::req req) -{ - json_object *args, *user, *passwd; - char *usr; - - args = req.json(); - if (!json_object_object_get_ex(args, "user", &user) - || !json_object_object_get_ex(args, "password", &passwd)) { - AFB_REQ_ERROR(req, "login, bad request: %s", json_object_get_string(args)); - req.fail("bad-request"); - } else if (afb_req_context_get(req)) { - AFB_REQ_ERROR(req, "login, bad state, logout first"); - req.fail("bad-state"); - } else if (strcmp(json_object_get_string(passwd), "please")) { - AFB_REQ_ERROR(req, "login, unauthorized: %s", json_object_get_string(args)); - req.fail("unauthorized"); - } else { - usr = strdup(json_object_get_string(user)); - AFB_REQ_NOTICE(req, "login user: %s", usr); - req.session_set_LOA(1); -// req.context(1, nullptr, free, usr); - req.success(); - event_login.push(json_object_new_string(usr)); - } -} - -void action(afb::req req) -{ - json_object *args, *val; - char *usr; - - args = req.json(); -// usr = (char*)req.context_get(); -usr = nullptr; - AFB_REQ_NOTICE(req, "action for user %s: %s", usr, json_object_get_string(args)); - if (json_object_object_get_ex(args, "subscribe", &val)) { - if (json_object_get_boolean(val)) { - AFB_REQ_NOTICE(req, "user %s subscribes to events", usr); - req.subscribe(event_login); - req.subscribe(event_logout); - } else { - AFB_REQ_NOTICE(req, "user %s unsubscribes to events", usr); - req.unsubscribe(event_login); - req.unsubscribe(event_logout); - } - } - req.success(json_object_get(args)); -} - -void logout(afb::req req) -{ - char *usr; - -// usr = (char*)req.context_get(); -usr = nullptr; - AFB_REQ_NOTICE(req, "login user %s out", usr); - event_logout.push(json_object_new_string(usr)); - req.session_set_LOA(0); -// req.context_clear(); - req.success(); -} - -int init( -#if AFB_BINDING_VERSION >= 3 - afb_api_t api -#endif -) -{ - AFB_NOTICE("init"); - event_login = afb_daemon_make_event("login"); - event_logout = afb_daemon_make_event("logout"); - if (afb_event_is_valid(event_login) && afb_event_is_valid(event_logout)) - return 0; - AFB_ERROR("Can't create events"); - return -1; -} - -const afb_verb_t verbs[] = { - afb::verb("login", login, "log in the system"), - afb::verb("action", action, "perform an action", AFB_SESSION_LOA_1), - afb::verb("logout", logout, "log out the system", AFB_SESSION_LOA_1), - afb::verbend() -}; - -const afb_binding_t afbBindingExport = afb::binding("tuto-3", verbs, "third tutorial: C++", init); - - diff --git a/bindings/tutorial/tuto-4.c b/bindings/tutorial/tuto-4.c deleted file mode 100644 index cb909fd0..00000000 --- a/bindings/tutorial/tuto-4.c +++ /dev/null @@ -1,29 +0,0 @@ -#define AFB_BINDING_VERSION 3 -#include <afb/afb-binding.h> - -void hello(afb_req_t req) -{ - AFB_REQ_DEBUG(req, "hello world"); - afb_req_reply(req, NULL, NULL, "hello world"); -} - -const afb_verb_t verbs[] = { - { .verb="hello", .callback=hello }, - { .verb=NULL } -}; - - -static int init(afb_api_t api) -{ - int rc = afb_api_require_api(api, "hello", 1); - if (!rc) - rc = afb_api_call_sync(api, "hello", "ping", NULL, NULL, NULL, NULL); - return rc; -} - -const afb_binding_t afbBindingExport = { - .api = "tuto-4", - .verbs = verbs, - .init = init -}; - diff --git a/bindings/tutorial/tuto-5.cpp b/bindings/tutorial/tuto-5.cpp deleted file mode 100644 index 458ae7b5..00000000 --- a/bindings/tutorial/tuto-5.cpp +++ /dev/null @@ -1,93 +0,0 @@ -#include <afb/c++/binding> -#include <json-c/json.h> -#include <string.h> - -class tuto5 - : public afb::base_api_t<tuto5> -{ -private: - afb::event event_login; - afb::event event_logout; - -public: - void login(afb::req req) - { - json_object *user, *passwd; - - json_object* args = req.json(); - if (!json_object_object_get_ex(args, "user", &user) - || !json_object_object_get_ex(args, "password", &passwd)) { - AFB_REQ_ERROR(req, "login, bad request: %s", json_object_get_string(args)); - req.fail("bad-request"); - } else if (afb_req_context_get(req)) { - AFB_REQ_ERROR(req, "login, bad state, logout first"); - req.fail("bad-state"); - } else if (std::string(json_object_get_string(passwd)) != std::string("please")) { - AFB_REQ_ERROR(req, "login, unauthorized: %s", json_object_get_string(args)); - req.fail("unauthorized"); - } else { - char* username = strdup(json_object_get_string(user)); - AFB_REQ_NOTICE(req, "login user: %s", username); - req.session_set_LOA(1); - afb_req_context_set(req, username, free); - req.success(); - event_login.push(json_object_new_string(username)); - } - } - - void action(afb::req req) const - { - json_object* val; - json_object* args = req.json(); - char* username = reinterpret_cast<char*>(afb_req_context_get(req)); - AFB_REQ_NOTICE(req, "action for user %s: %s", username, json_object_get_string(args)); - if (json_object_object_get_ex(args, "subscribe", &val)) { - if (json_object_get_boolean(val)) { - AFB_REQ_NOTICE(req, "user %s subscribes to events", username); - req.subscribe(event_login); - req.subscribe(event_logout); - } else { - AFB_REQ_NOTICE(req, "user %s unsubscribes to events", username); - req.unsubscribe(event_login); - req.unsubscribe(event_logout); - } - } - req.success(json_object_get(args)); - } - - void logout(afb::req req) - { - char* username = reinterpret_cast<char*>(afb_req_context_get(req)); - AFB_REQ_NOTICE(req, "login user %s out", username); - event_logout.push(json_object_new_string(username)); - req.session_set_LOA(0); - afb_req_context_clear(req); - req.success(); - } - - int preinit(afb_api_t h) override - { - return !( - (add_verb<&tuto5::login>("login", "log in the system") == 0) && - (add_verb<&tuto5::action>("action", "perform an action", nullptr, nullptr, AFB_SESSION_LOA_1) == 0) && - (add_verb<&tuto5::logout>("logout", "log out the system", nullptr, nullptr, AFB_SESSION_LOA_1) == 0) - ); - } - - int init() override - { - AFB_API_NOTICE(api_, "init"); - event_login = make_event("login"); - event_logout = make_event("logout"); - if (event_login.is_valid() && event_logout.is_valid()) - return 0; - AFB_API_ERROR(api_, "Can't create events"); - return -1; - } -}; - -int afbBindingEntry(afb_api_t h) -{ - afb::new_api<tuto5>(h, "tuto-5", "fifth tutorial: C++"); - return 0; -} diff --git a/bindings/tutorial/tuto-app1.c b/bindings/tutorial/tuto-app1.c deleted file mode 100644 index 93747cdd..00000000 --- a/bindings/tutorial/tuto-app1.c +++ /dev/null @@ -1,30 +0,0 @@ -#include <stdio.h> - -#define AFB_BINDING_VERSION 3 -#include <afb/afb-binding.h> - -static int appmain(void *arg) -{ - const char *name = arg; - char buffer[50]; - - AFB_API_NOTICE(afbBindingV3root, "Entering Application main"); - printf("Hello, I'm %s!\n", name); - printf("What's your name? "); - scanf("%s", buffer); - printf("Hi %s! Nice to meet you. OOOOPS I'm late bye bye\n", buffer); - return 0; -} - -static void application(int signum, void *arg) -{ - if (signum) - exit(127); - exit(appmain(arg)); -} - -int afbBindingV3entry(struct afb_api_x3 *rootapi) -{ - return afb_api_queue_job(rootapi, application, "BOB", NULL, 0); -} - |