const char _reply_message[] = "reply_message";
const char _keyData[] = "data";
const char _keyId[] = "id";
+const char _parameter[] = "parameter";
+const char _area[] = "area";
struct hs_handshake {
hs_handshake(int times, int sleep) : m_times(times), m_sleep(sleep) {}
int start(afb_api_t api);
- void handshake_loop(afb_api_t api);
+ void handshake_loop(afb_api_t api, int times, int sleeps);
enum HandshakeStatus {
Handshake_Idle = 0,
AFB_NOTICE("start handshake with windowmanager.");
setEventHook(sub_event.c_str(), on_handshake_event);
- std::thread th(&hs_handshake::handshake_loop, this, api);
+ std::thread th(&hs_handshake::handshake_loop, this, api, m_times, m_sleep);
th.detach();
return 0;
}
* None
*
*/
-void hs_handshake::handshake_loop(afb_api_t api)
+void hs_handshake::handshake_loop(afb_api_t api, int times, int sleeps)
{
int count = 0;
do {
}
++count;
- usleep(m_sleep*1000);
- } while(count < m_times);
- AFB_NOTICE("handshake over, count=%d.", count);
+ usleep(sleeps*1000);
+ } while(count < times);
+ AFB_NOTICE("handshake over, m_times=%d, m_sleep=%d, count=%d.", times, sleeps, count);
HS_AppRecover::instance()->startRecovery(api);
}
{
AFB_DEBUG("called.");
int ret = 0;
+ struct json_object *param_obj, *area_obj;
const char* value = afb_req_value(request, _application_id);
- if (value) {
+ if (value
+ && json_object_object_get_ex(afb_req_json(request), _parameter, ¶m_obj)
+ && json_object_object_get_ex(param_obj, _area, &area_obj)) {
AFB_INFO("request appid = %s.", value);
+ const char* area = json_object_get_string(area_obj);
ret = g_hs_instance->client_manager->handleRequest(request, __FUNCTION__, value);
if(ret == AFB_REQ_NOT_STARTED_APPLICATION) {
- g_hs_instance->client_manager->setStartupAppid(std::string(value));
+ g_hs_instance->client_manager->setStartupAppidAndArea(make_pair(std::string(value), std::string(area)));
std::string id = g_hs_instance->app_info->getAppProperty(value, _keyId);
HS_AfmMainProxy afm_proxy;
afm_proxy.start(request->api, id);
{
AFB_DEBUG("called.");
int ret = 0;
+ struct json_object *param_obj, *area_obj;
const char* value = afb_req_value(request, _application_id);
- if (value) {
+ if (value
+ && json_object_object_get_ex(afb_req_json(request), _parameter, ¶m_obj)
+ && json_object_object_get_ex(param_obj, _area, &area_obj)) {
+ const char* area = json_object_get_string(area_obj);
ret = g_hs_instance->client_manager->handleRequest(request, __FUNCTION__, value);
if(ret == AFB_REQ_NOT_STARTED_APPLICATION) {
- g_hs_instance->client_manager->setStartupAppid(std::string(value));
+ g_hs_instance->client_manager->setStartupAppidAndArea(make_pair(std::string(value), std::string(area)));
std::string id = g_hs_instance->app_info->getAppProperty(value, _keyId);
HS_AfmMainProxy afm_proxy;
afm_proxy.start(request->api, id);