const char* _invoke_1 (T& t, const char* d, size_t s) { const char* next = 0; const char *method = 0; const char *id = 0; const char *result = 0; _search_(d, d + s, &method, &result, &id); if ( method==0 && result==0) { t.get_aspect().template get<_invalid_json_>()(t, d, s ); return next; } if ( result!=0 && id==0) { t.get_aspect().template get<_invalid_json_>()(t, d, s ); return next; } int rid = -1; if (id!=0) rid = std::atoi(id); typedef typename T::aspect::advice_list advice_list; typedef typename ap::select<_gmethod_, advice_list>::type invoke_list; if ( method!=0 && id!=0 && result==0) { ids_set::iterator itr = _in_ids.lower_bound(rid); _in_ids.insert(itr, rid); next = _invoke(t, invoke_list(), method, d, s, -1); // request } else if ( method!=0 && id==0 && result==0) next = _invoke(t, invoke_list(), method, d, s, -2); // notify else if (result!=0 && id!=0 && method==0) next = _invoke(t, invoke_list(), result, d, s, rid); // response else { t.get_aspect().template get<_invalid_json_>()(t, d, s ); return next; } return next; }
void OpenHRP::_objref_PluginManager::load(const char* name) { _0RL_cd_969E6A9BF2804FC9_00000000 _call_desc(_0RL_lcfn_969E6A9BF2804FC9_50000000, "load", 5); _call_desc.arg_0 = name; _invoke(_call_desc); }
void OpenHRP::_objref_Plugin::stop() { _0RL_cd_969E6A9BF2804FC9_20000000 _call_desc(_0RL_lcfn_969E6A9BF2804FC9_40000000, "stop", 5); _invoke(_call_desc); }
void OpenHRP::_objref_Plugin::start() { _0RL_cd_969E6A9BF2804FC9_20000000 _call_desc(_0RL_lcfn_969E6A9BF2804FC9_30000000, "start", 6); _invoke(_call_desc); }
void OpenHRP::_objref_Plugin::stop() { _0RL_cd_969e6a9bf2804fc9_20000000 _call_desc(_0RL_lcfn_969e6a9bf2804fc9_40000000, "stop", 5); _invoke(_call_desc); }
char* _objref_Echo::echoString(const char* mesg) { _0RL_cd_01531d3e51c81a80_00000000 _call_desc(_0RL_lcfn_01531d3e51c81a80_10000000, "echoString", 11); _call_desc.arg_0 = mesg; _invoke(_call_desc); return _call_desc.result._retn(); }
void OpenHRP::_objref_sonyService::start() { _0RL_cd_457ccd98b3f23528_00000000 _call_desc(_0RL_lcfn_457ccd98b3f23528_10000000, "start", 6); _invoke(_call_desc); }
void OpenHRP::_objref_CommandReceiver::sendMsg(const char* msg) { _0RL_cd_969E6A9BF2804FC9_00000000 _call_desc(_0RL_lcfn_969E6A9BF2804FC9_10000000, "sendMsg", 8); _call_desc.arg_0 = msg; _invoke(_call_desc); }
void _objref_systemCommand::function(const char* command, const char* argv, ::CORBA::String_out cout) { _0RL_cd_0c80e0b9850984f9_00000000 _call_desc(_0RL_lcfn_0c80e0b9850984f9_10000000, "function", 9); _call_desc.arg_0 = command; _call_desc.arg_1 = argv; _invoke(_call_desc); cout = _call_desc.arg_2._retn(); }
OpenHRP::Plugin_ptr OpenHRP::_objref_PluginManager::create(const char* pclass, const char* name, const char* args) { _0RL_cd_969E6A9BF2804FC9_60000000 _call_desc(_0RL_lcfn_969E6A9BF2804FC9_70000000, "create", 7); _call_desc.arg_0 = pclass; _call_desc.arg_1 = name; _call_desc.arg_2 = args; _invoke(_call_desc); return _call_desc.result._retn(); }
void XmlProxyCallback::doRequest(const std::string & sXmlText) { XmlProxyCallbackPtr cb = this; if (!_xmlReq.SetDoc(sXmlText) || !_xmlReq.FindElem("request")) { LOG->error() << " parse xml fail" << endl; _sendXmlMessage("parse xml fail"); return ; } _bHasResXml = true; _xmlRes.AddElem("response"); _xmlRes.IntoElem(); _sResponseEncode = _xmlReq.GetAttrib("charset"); for (_xmlReq.IntoElem(); _xmlReq.FindElem(); ) { if (_xmlReq.GetTagName() != "req") continue; MCD_STR sRequestID = _xmlReq.GetAttrib("id"); MCD_STR sSvtName; MCD_STR sFunName; taf::JceOutputStream<taf::BufferWriter> os; for (_xmlReq.IntoElem(); _xmlReq.FindElem(); ) { MCD_STR sTagName = _xmlReq.GetTagName(); MCD_STR sTagData = _xmlReq.GetData(); if (sTagName == "svt") { sSvtName = sTagData; } else if (sTagName == "fun") { sFunName = sTagData; } else if (sTagName == "para") { _writeParameters(os); } } _xmlReq.OutOfElem(); _invoke(sRequestID, sSvtName, sFunName, os.getBuffer(), os.getLength(), cb); } }
const char* _invoke(T& t, L, const char* name, const char* d, size_t s, int code) { const char* next = 0; typedef typename T::aspect::advice_list advice_list; typedef typename ap::select<_gmethod_, advice_list>::type invoke_list; typedef typename L::left_type current_type; enum { method_position = ap::type_position<current_type, invoke_list >::result }; current_type& current = t.get_aspect().template get<typename L::left_type>(); bool flag = false; if ( code > 0 || _raw_equal( current.name(), name ) ) { flag = true; if (code==-1) { t.get_aspect().template get<ad::_clock_start_>()(t); next = current.invoke_request(t, d, s); t.get_aspect().template get<ad::_span_reg_>().mark( method_position ); t.get_aspect().template get<ad::_clock_finish_>()(t); } else if (code==-2) { t.get_aspect().template get<ad::_clock_start_>()(t); next = current.invoke_notify(t, d, s); t.get_aspect().template get<ad::_span_reg_>().mark( method_position ); t.get_aspect().template get<ad::_clock_finish_>()(t); } else { if ( current.has_id(code) ) { next = current.invoke_response(t, d, s); // t.get_aspect().template get<ad::_span_reg_>().mark( method_position ); } else flag = false; } } if (!flag) return _invoke(t, typename L::right_type(), name, d, s, code); return next; }
static void mg_join(struct mg_connection* conn, const struct mg_request_info* ri) { if(strcmp(ri->request_method, "GET") == 0) { uint new_id = rand_uint(); if(!aatree_insert(&clients, new_id, (void*)1)) goto error; mg_printf(conn, "%s", standard_reply); mg_printf(conn, "%u\n", new_id); // Invoke join_cb _invoke("join_cb", new_id, NULL); return; } error: mg_error(conn, ri); }
static void mg_keep_alive(struct mg_connection* conn, const struct mg_request_info* ri) { const char *cl; char *buf; int len; mg_printf(conn, "%s", standard_reply); if (strcmp(ri->request_method, "POST") == 0 && (cl = mg_get_header(conn, "Content-Length")) != NULL) { len = atoi(cl); if ((buf = MEM_ALLOC(len+1)) != NULL) { mg_read(conn, buf, len); buf[len] = '\0'; uint id; sscanf(buf, "%u", &id); MEM_FREE(buf); // Invoke keep_alive _invoke("keep_alive_cb", id, NULL); } } }
static void mg_leave(struct mg_connection* conn, const struct mg_request_info* ri) { const char *cl; char *buf; int len; if (strcmp(ri->request_method, "POST") == 0 && (cl = mg_get_header(conn, "Content-Length")) != NULL) { len = atoi(cl); if ((buf = MEM_ALLOC(len+1)) != NULL) { mg_read(conn, buf, len); buf[len] = '\0'; uint id; sscanf(buf, "%u", &id); MEM_FREE(buf); if(aatree_size(&clients)) { aatree_remove(&clients, id); // Invoke leave_cb _invoke("leave_cb", id, NULL); mg_printf(conn, "%s", standard_reply); return; } else { goto error; } } } else if(strcmp(ri->request_method, "OPTIONS") == 0) { mg_printf(conn, "%s", standard_reply); return; } error: mg_error(conn, ri); }
void invoke() { if (_isOn()) _invoke(); }
void invoke() { _invoke(Tag()); }