summaryrefslogtreecommitdiffstats
path: root/libnavi/src/RequestManage.cpp
diff options
context:
space:
mode:
authorMatt Ranostay <matt.ranostay@konsulko.com>2019-10-19 13:45:11 -0700
committerMatt Ranostay <matt.ranostay@konsulko.com>2019-10-31 01:59:13 -0700
commit3e94024998c1615bd30306aab7537db22161a9ce (patch)
tree6bea3ac4de640d98c8c27ffd0c02f9eb86ca0773 /libnavi/src/RequestManage.cpp
parent9539611e896e61e27154bbb5917188753a983871 (diff)
binding: navigation: rewrite of navigation binding
To remove dependency on DBus the binding needed to be rewritten to output pure JSON output to subscribed consumers. Bug-AGL: SPEC-2880 Change-Id: Ie85dfccd42ca36119116a0fbfb16bf4e96efc184 Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
Diffstat (limited to 'libnavi/src/RequestManage.cpp')
-rw-r--r--libnavi/src/RequestManage.cpp204
1 files changed, 0 insertions, 204 deletions
diff --git a/libnavi/src/RequestManage.cpp b/libnavi/src/RequestManage.cpp
deleted file mode 100644
index 7db34e1..0000000
--- a/libnavi/src/RequestManage.cpp
+++ /dev/null
@@ -1,204 +0,0 @@
-// Copyright 2017 AW SOFTWARE CO.,LTD
-// Copyright 2017 AISIN AW CO.,LTD
-
-#include <string.h>
-#include <errno.h>
-#include <pthread.h>
-#include <time.h>
-#include <unistd.h>
-#include <systemd/sd-event.h>
-#include <json-c/json.h>
-#include <traces.h>
-#include "RequestManage.h"
-
-/**
- * @brief constructor
- */
-RequestManage::RequestManage() : listener(nullptr)
-{
- // Callback setting
- this->wsj1_itf.on_hangup = RequestManage::OnHangupStatic;
- this->wsj1_itf.on_call = RequestManage::OnCallStatic;
- this->wsj1_itf.on_event = RequestManage::OnEventStatic;
-
- pthread_cond_init(&this->cond, nullptr);
- pthread_mutex_init(&this->mutex, nullptr);
-}
-
-/**
- * @brief Destructor
- */
-RequestManage::~RequestManage()
-{
-}
-
-void* RequestManage::BinderThread(void* param)
-{
- RequestManage* instance = (RequestManage*) param;
- sd_event *loop;
-
- int rc = sd_event_default(&loop);
- if (rc < 0) {
- TRACE_ERROR("connection to default event loop failed: %s\n", strerror(-rc));
- return nullptr;
- }
-
- instance->wsj1 = afb_ws_client_connect_wsj1(loop, instance->requestURL->c_str(), &instance->wsj1_itf, nullptr);
- if (instance->wsj1 == nullptr)
- {
- TRACE_ERROR("connection to %s failed: %m\n", api_url);
- return nullptr;
- }
-
- // Signal
- pthread_mutex_unlock(&instance->mutex);
- pthread_cond_signal(&instance->cond);
-
- while (1)
- {
- sd_event_run(loop, 1000 * 1000); // 1sec
- }
-
- return nullptr;
-}
-
-/**
- * @brief Connect with a service
- * @param URL
- * @return Success or failure of connection
- */
-bool RequestManage::Connect(const char* api_url, RequestManageListener* listener)
-{
- this->listener = listener;
- this->requestURL = new std::string(api_url);
-
- pthread_t thread_id;
- pthread_create(&thread_id, nullptr, RequestManage::BinderThread, (void*)this);
-
- // Wait until response comes
- pthread_mutex_lock(&this->mutex);
- pthread_cond_wait(&this->cond, &this->mutex);
- pthread_mutex_unlock(&this->mutex);
-
- if (this->wsj1 == nullptr)
- {
- return false;
- }
-
- return true;
-}
-
-/**
- * @brief Connection status check with service
- * @return Connection status
- */
-bool RequestManage::IsConnect(){
- return (this->wsj1 != NULL);
-}
-
-/**
- * @brief Call Binder's API
- * @param api api
- * @param verb method
- * @param req_json Json style request
- * @return Success or failure of processing
- */
-bool RequestManage::CallBinderAPI(const char* api, const char* verb, const char* req_json)
-{
- // Send request
- int rc = afb_wsj1_call_s(this->wsj1, api, verb, req_json, RequestManage::OnReplyStatic, this);
- if (rc < 0)
- {
- TRACE_ERROR("calling %s/%s(%s) failed: %m\n", api, verb, req_json);
- return false;
- }
-
- return true;
-}
-
-/**
- * @brief Set session handle
- * @param session Session handle
- */
-void RequestManage::SetSessionHandle( uint32_t session )
-{
- this->sessionHandle = session;
-}
-
-/**
- * @brief Get session handle
- * @return Session handle
- */
-uint32_t RequestManage::GetSessionHandle()
-{
- return this->sessionHandle;
-}
-
-/**
- * @brief Set route handle
- * @param route Route handle
- */
-void RequestManage::SetRouteHandle( uint32_t route )
-{
- this->routeHandle = route;
-}
-
-/**
- * @brief Get route handle
- * @return Route handle
- */
-uint32_t RequestManage::GetRouteHandle()
-{
- return this->routeHandle;
-}
-
-void RequestManage::OnReply(struct afb_wsj1_msg *msg)
-{
- struct json_object * json = afb_wsj1_msg_object_j(msg);
-
- this->listener->OnReply(json);
-}
-
-void RequestManage::OnHangup(struct afb_wsj1 *wsj1)
-{
-}
-
-void RequestManage::OnCallStatic(const char *api, const char *verb, struct afb_wsj1_msg *msg)
-{
-}
-
-void RequestManage::OnEventStatic(const char *event, struct afb_wsj1_msg *msg)
-{
-}
-
-
-/**
- * @brief Answer callback from service
- */
-void RequestManage::OnReplyStatic(void *closure, struct afb_wsj1_msg *msg)
-{
- RequestManage* instance = (RequestManage *)closure;
- instance->OnReply(msg);
-}
-
-/**
- * @brief Service hang notification
- */
-void RequestManage::OnHangupStatic(void *closure, struct afb_wsj1 *wsj1)
-{
- printf("DEBUG:%s:%d (%p,%p)\n", __func__, __LINE__, closure, wsj1);
- fflush(stdout);
-}
-
-void RequestManage::OnCallStatic(void *closure, const char *api, const char *verb, struct afb_wsj1_msg *msg)
-{
- printf("DEBUG:%s:%d (%p,%s,%s,%p)\n", __func__, __LINE__, closure, api, verb, msg);
- fflush(stdout);
-}
-
-void RequestManage::OnEventStatic(void *closure, const char *event, struct afb_wsj1_msg *msg)
-{
- printf("DEBUG:%s:%d (%p,%s,%p)\n", __func__, __LINE__, closure, event, msg);
- fflush(stdout);
-}
-