本文整理汇总了C++中meta_message_ptr类的典型用法代码示例。如果您正苦于以下问题:C++ meta_message_ptr类的具体用法?C++ meta_message_ptr怎么用?C++ meta_message_ptr使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了meta_message_ptr类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: link_get_parameters_confirm
/**
* Link Get Parameters Confirm message handler.
*
* @param in input message.
* @param out output message.
* @return true if the response is sent immediately or false otherwise.
*/
bool command_service::link_get_parameters_confirm(meta_message_ptr &in,
meta_message_ptr &out)
{
ODTONE_LOG(1, "(mics) received Link_Get_Parameters.confirm from ",
in->source().to_string());
_link_abook.reset(in->source().to_string());
if(_lpool.set_user_tid(in)) {
mih::status st;
boost::optional<mih::link_param_list> lpl;
boost::optional<mih::link_states_rsp_list> lsrl;
boost::optional<mih::link_desc_rsp_list> ldrl;
*in >> mih::confirm(mih::confirm::link_get_parameters)
& mih::tlv_status(st)
& mih::tlv_link_parameters_status_list(lpl)
& mih::tlv_link_states_rsp(lsrl)
& mih::tlv_link_descriptor_rsp(ldrl);
if(st == mih::status_success) {
mih::link_status_rsp link_status;
link_status.states_rsp_list = lsrl.get();
link_status.param_list = lpl.get();
link_status.desc_rsp_list = ldrl.get();
_lrpool.add(in->source().to_string(),
in->tid(),
link_status);
}
return false;
}
开发者ID:ATNoG,项目名称:EMICOM,代码行数:41,代码来源:command_service.cpp
示例2: link_actions_request
// This message is handled by the Link SAP.
//
// If this MIHF is the destination of the message, forward it to the
// default Link SAP. If not then forward it to a peer MIHF.
bool command_service::link_actions_request(meta_message_ptr &in,
meta_message_ptr &out)
{
log(1, "(mics) received a Link_Actions.request from",
in->source().to_string());
if(utils::this_mihf_is_destination(in)) {
//
// Kick this message to MIH_Link SAP.
//
// The solution found to handle this corner case in the
// 802.21 standard was to send the message, as is, to the
// link sap.
//
in->destination(mih::id("link"));
_lpool.add(in);
in->source(mihfid);
_transmit(in);
return false;
} else {
utils::forward_request(in, _lpool, _transmit);
return false;
}
return false;
}
开发者ID:shtrom,项目名称:odtone,代码行数:31,代码来源:command_service.cpp
示例3: log
// Check if there's a handler for this message and call it, else
// discard message.
void sac_dispatch::operator()(meta_message_ptr& in)
{
/** __no__ authentication at this point */
uint mid = in->mid();
log(1, "(sac) dispatching message with mid: ", mid);
//
// no thread safety because insertion should __only__ be made
// on MIHF initialization
//
std::map<uint, handler_t>::iterator it;
it = _callbacks.find(mid);
if(it != _callbacks.end()) {
handler_t process_message = it->second;
meta_message_ptr out(new meta_message);
out->tid(in->tid());
// send response if it was generated
if (process_message(in, out))
_transmit(out);
} else {
log(1, "(sac) (warning) message with mid: ", mid,
" unknown, discarding.");
}
}
开发者ID:shtrom,项目名称:odtone,代码行数:29,代码来源:service_access_controller.cpp
示例4: link_get_parameters_request
// This message is handled by the Link SAP.
//
// If this MIHF is the destination of the message, forward it to the
// default Link SAP. If not then forward it to a peer MIHF.
bool command_service::link_get_parameters_request(meta_message_ptr &in,
meta_message_ptr &out)
{
log(1, "(mics) received a Link_Get_Parameters.request from",
in->source().to_string());
if(utils::this_mihf_is_destination(in)) {
//
// Kick this message to MIH_Link SAP.
//
// The solution found to handle this corner case in the
// 802.21 standard was to send the message, as is, to the
// link sap.
//
// local_transactions was made to handle request's
// from users to peer mihf's but in this case we add an
// entry to handle the MIH_Link_Get_Parameters and
// Link_Get_Parameters.
//
in->destination(mih::id("link"));
_lpool.add(in);
in->source(mihfid);
_transmit(in);
return false;
} else {
utils::forward_request(in, _lpool, _transmit);
return false;
}
return false;
}
开发者ID:shtrom,项目名称:odtone,代码行数:37,代码来源:command_service.cpp
示例5: generic_command_response
//
// Currently Command_Service messages are handled by a default local
// user. If this MIHF is the destination of the message, check for a
// pending transaction and forward the message.
//
bool command_service::generic_command_response(const char *recv_msg,
const char *send_msg,
meta_message_ptr &in,
meta_message_ptr &out)
{
log(1, recv_msg, in->source().to_string());
if(utils::this_mihf_is_destination(in)) {
//
// Kick this message to default MIH User as an indication
//
log(1, send_msg);
in->opcode(mih::operation::confirm);
in->destination(mih::id("user"));
//
// source identifier is the remote MIHF
//
_transmit(in);
return false;
} else {
utils::forward_request(in, _lpool, _transmit);
return false;
}
}
开发者ID:shtrom,项目名称:odtone,代码行数:31,代码来源:command_service.cpp
示例6: sac_process_message
/**
* Check if there's a handler for this message and call it, else
* discard message.
*
* @param in The input message.
* @param out The output message.
*/
bool sac_process_message(meta_message_ptr& in, meta_message_ptr& out)
{
// discard messages that this MIHF broadcasted to itself
// discard messages that are not destined to this MIHF or if
// multicast messages are not supported
if(in->source() == mihfid) {
ODTONE_LOG(1, "(sac) Discarding message! Reason: ",
"message was broadcasted to itself");
return false;
}
if(!utils::this_mihf_is_destination(in) && !utils::is_multicast(in)) {
ODTONE_LOG(1, "(sac) Discarding message! Reason: ",
"this is not the message destination");
return false;
}
/** __no__ authentication at this point */
uint mid = in->mid();
//
// no thread safety because insertion should __only__ be made
// on MIHF initialization
//
std::map<uint, handler_t>::iterator it;
it = _callbacks.find(mid);
if(it != _callbacks.end()) {
handler_t process_message = it->second;
bool rsp;
try {
rsp = process_message(in, out);
} catch(mih::bad_tlv) {
ODTONE_LOG(1, "Discarding malformed message.");
return false;
}
// set ip and port of response message
out->ip(in->ip());
out->scope(in->scope());
out->port(in->port());
// response message must have the same tid
out->tid(in->tid());
return rsp;
} else {
ODTONE_LOG(1, "(sac) (warning) message with mid: ", mid,
" unknown, discarding.");
}
return false;
}
开发者ID:ATNoG,项目名称:ODTONE,代码行数:65,代码来源:service_access_controller.cpp
示例7: operator
/**
* Send message to a local entity. If the output message destination is a peer
* MIHF redirect it to the message_out module.
*
* @param msg The output message.
*/
void transmit::operator()(meta_message_ptr& msg)
{
// TODO: remove try catch
try{
// FIXME: Response shouldn't be send to MIH Users
if(msg->opcode() != mih::operation::request) {
user_entry user = _user_abook.get(msg->destination().to_string());
if(msg->opcode() == mih::operation::response) {
msg->opcode(mih::operation::confirm);
}
utils::udp_send(_io, msg, user.ip.c_str(), user.port, _port);
ODTONE_LOG(1, "(transmit) sending local message to: ",
msg->destination().to_string(), " : ", user.ip, " : ", user.port);
}
else {
link_entry link = _link_abook.get(msg->destination().to_string());
utils::udp_send(_io, msg, link.ip.c_str(), link.port, _port);
ODTONE_LOG(1, "(transmit) sending local message to: ",
msg->destination().to_string(), " : ", link.ip, " : ", link.port);
}
} catch (...) {
if(msg->opcode() == mih::operation::confirm) {
msg->opcode(mih::operation::response);
}
ODTONE_LOG(1, "(transmit) forwarding to message_out");
_msg_out(msg);
}
}
开发者ID:ATNoG,项目名称:ODTONE,代码行数:34,代码来源:transmit.cpp
示例8: get_capabilities
/**
* Parse all capabilities from MIH Capability Discover message and stores
* them.
*
* @param in input message.
* @param out output message.
*/
void service_management::get_capabilities(meta_message_ptr& in,
meta_message_ptr& out)
{
address_entry mihf_info;
mihf_info.ip = in->ip();
mihf_info.port = in->port();
if(in->opcode() == mih::operation::request) {
*in >> mih::request(mih::request::capability_discover)
& mih::tlv_net_type_addr_list(mihf_info.capabilities_list_net_type_addr)
& mih::tlv_event_list(mihf_info.capabilities_event_list)
& mih::tlv_command_list(mihf_info.capabilities_cmd_list)
& mih::tlv_query_type_list(mihf_info.capabilities_query_type)
& mih::tlv_transport_option_list(mihf_info.capabilities_trans_list)
& mih::tlv_mbb_ho_supp_list(mihf_info.capabilities_mbb_ho_supp);
} else if(in->opcode() == mih::operation::response) {
开发者ID:ATNoG,项目名称:ODTONE,代码行数:23,代码来源:service_management.cpp
示例9: link_capability_discover_request
/**
* Asks for the capabilities of all local Link SAPs.
*
* @param in The input message.
* @param out The output message.
* @return Always false, because it does not send any response directly.
*/
bool service_management::link_capability_discover_request(meta_message_ptr &in,
meta_message_ptr &out)
{
// Asks for local Link SAPs capabilities
ODTONE_LOG(1, "(mism) gathering information about local Link SAPs capabilities");
*out << mih::request(mih::request::capability_discover);
out->tid(in->tid());
out->destination(in->source());
// Check if the Link SAP is still active
uint16 fails = _link_abook.fail(out->destination().to_string());
if(fails > kConf_MIHF_Link_Delete_Value) {
mih::octet_string dst = out->destination().to_string();
_link_abook.inactive(dst);
// Update MIHF capabilities
utils::update_local_capabilities(_abook, _link_abook, _user_abook);
}
else {
ODTONE_LOG(1, "(mics) forwarding Link_Capability_Discover.request to ",
out->destination().to_string());
utils::forward_request(out, _lpool, _transmit);
}
return false;
}
开发者ID:ATNoG,项目名称:ODTONE,代码行数:34,代码来源:service_management.cpp
示例10: operator
/**
* Checks, in the transaction pool, if the outgoing message belongs to a pending
* transaction. If true it runs the transaction, otherwise it creates a new
* transaction.
*
* @param out The output message.
*/
void message_out::operator()(meta_message_ptr& out)
{
out->ackreq(true); // FIXME: read from config file
if (out->opcode() == mih::operation::response) {
dst_transaction_ptr t;
dst_transaction_set::iterator it;
_tpool.find(out->destination(), out->tid(), t);
if (t) {
t->out = out;
t->msg_out_avail = true;
if (t->start_ack_requestor)
t->ack_requestor();
if (t->start_ack_responder)
t->ack_responder();
if(t->transaction_status == ONGOING)
t->run();
if (t->transaction_status != ONGOING && t->ack_requestor_status != ONGOING)
_tpool.del(t);
} else {
new_src_transaction(out);
}
} else if ((out->opcode() == mih::operation::indication) || (out->opcode() == mih::operation::request)) {
src_transaction_ptr t;
_tpool.find(out->destination(), out->tid(), t);
if (t) {
t->out = out;
t->msg_out_avail = true;
if (t->start_ack_requestor)
t->ack_requestor();
if (t->start_ack_responder)
t->ack_responder();
if(t->transaction_status == ONGOING)
t->run();
if (t->transaction_status != ONGOING && t->ack_requestor_status != ONGOING)
_tpool.del(t);
} else {
new_src_transaction(out);
}
}
}
开发者ID:ATNoG,项目名称:EMICOM,代码行数:60,代码来源:message_out.cpp
示例11: link_get_parameters_response
/**
* Link Get Parameters Response message handler.
*
* @param in The input message.
* @param out The output message.
* @return True if the response is sent immediately or false otherwise.
*/
bool command_service::link_get_parameters_response(meta_message_ptr &in,
meta_message_ptr &out)
{
ODTONE_LOG(1, "(mics) received Link_Get_Parameters.response from ",
in->source().to_string());
if(!_lpool.set_user_tid(in)) {
ODTONE_LOG(1, "(mics) warning: no local transaction for this msg ",
"discarding it");
return false;
}
ODTONE_LOG(1, "(mics) forwarding Link_Get_Parameters.response to ",
in->destination().to_string());
_transmit(in);
return false;
}
开发者ID:ATNoG,项目名称:EMICOM,代码行数:26,代码来源:command_service.cpp
示例12: msg_forward
// send message for all users subscribed to event from link identifier
void event_service::msg_forward(meta_message_ptr &msg,
mih::link_tuple_id &li,
mih::event_list_enum event)
{
std::list<event_registration_t>::iterator it;
int i = 0; // for logging purposes
msg->source(mihfid);
for(it = _event_subscriptions.begin();
it != _event_subscriptions.end();
it++, i++) {
if ((it->event == event) &&(it->link == li)) {
log(3, i, " (mies) found registration of user: ",
it->user, " for event type ", event);
msg->destination(mih::id(it->user));
_transmit(msg);
}
}
}
开发者ID:shtrom,项目名称:odtone,代码行数:20,代码来源:event_service.cpp
示例13: link_configure_thresholds_response
// Check if there's a pending transaction and forward the message in
// case there is.
bool command_service::link_configure_thresholds_response(meta_message_ptr &in,
meta_message_ptr &out)
{
log(1, "(mics) received Link_Configure_Thresholds.response from ",
in->source().to_string());
if(!_lpool.set_user_tid(in)) {
log(1, "(mics) warning: no local transaction for this msg ",
"discarding it");
return false;
}
in->source(mihfid);
log(1, "(mics) forwarding Link_Configure_Thresholds.response to ", in->destination().to_string());
_transmit(in);
return false;
}
开发者ID:shtrom,项目名称:odtone,代码行数:22,代码来源:command_service.cpp
示例14: new_src_transaction
/**
* Create a new source transaction for the outgoing message.
*
* @param m The output message.
*/
void message_out::new_src_transaction(meta_message_ptr& m)
{
src_transaction_ptr t(new src_transaction_t(process_message, _netsap));
_tid++;
if (_tid == 0) // don't send a message with a
_tid = 1; // transaction id of 0
_lpool.set_remote_tid(m->destination().to_string(), m->tid(), _tid);
m->tid(_tid);
t->out = m;
t->mid = m->mid();
t->msg_out_avail = true;
t->run();
if (t->transaction_status == ONGOING)
_tpool.add(t);
}
开发者ID:ATNoG,项目名称:EMICOM,代码行数:25,代码来源:message_out.cpp
示例15: link_actions_response
// Check if there's a pending transaction and forward the message in
// case there is.
bool command_service::link_actions_response(meta_message_ptr &in,
meta_message_ptr &out)
{
log(1, "(mics) received Link_Actions.response from ",
in->source().to_string());
if(!_lpool.set_user_tid(in))
{
log(1, "(mics) no local pending transaction for this message, discarding");
return false;
}
in->source(mihfid);
log(1, "(mics) forwarding Link_Actions.response to ", in->destination().to_string());
_transmit(in);
return false;
}
开发者ID:shtrom,项目名称:odtone,代码行数:22,代码来源:command_service.cpp
示例16: link_down_indication
// log received message type, and forward it
bool event_service::link_down_indication(meta_message_ptr &in, meta_message_ptr&)
{
// if(in->payload().size() == 0)
// return false;
log(1, "(mies) received Link_Down.indication from ",
in->source().to_string());
link_event_forward(in, mih::link_down);
return false;
}
开发者ID:shtrom,项目名称:odtone,代码行数:12,代码来源:event_service.cpp
示例17: link_pdu_transmit_status_indication
bool event_service::link_pdu_transmit_status_indication(meta_message_ptr &in,
meta_message_ptr&)
{
// if(in->payload().size() == 0)
// return false;
log(1, "(mies) received Link_PDU_Transmit_Status.indication from ",
in->source().to_string());
link_event_forward(in, mih::link_pdu_transmit_status);
return false;
}
开发者ID:shtrom,项目名称:odtone,代码行数:12,代码来源:event_service.cpp
示例18: new_dst_transaction
/**
* Create a new destination transaction for the incoming message.
*
* @param m The input message.
*/
void message_in::new_dst_transaction(meta_message_ptr& m)
{
dst_transaction_ptr t(new dst_transaction_t(process_message, _netsap));
t->in = m;
t->mid = m->mid();
t->msg_in_avail = true;
t->run();
if (t->transaction_status == ONGOING)
_tpool.add(t);
}
开发者ID:ATNoG,项目名称:EMICOM,代码行数:17,代码来源:message_in.cpp
示例19: local_event_unsubscribe_request
// This MIHF is the destination of the Event_Unsubscribe.request.
// Deserialize message, unsubscribe user and send a response
bool event_service::local_event_unsubscribe_request(meta_message_ptr &in,
meta_message_ptr &out)
{
mih::status st;
mih::link_tuple_id link;
mih::event_list events;
*in >> mih::request(mih::request::event_unsubscribe)
& mih::tlv_link_identifier(link)
& mih::tlv_event_list(events);
st = unsubscribe(in->source(), link, events);
*out << mih::response(mih::response::event_unsubscribe)
& mih::tlv_status(st)
& mih::tlv_link_identifier(link)
& mih::tlv_event_list(events);
out->tid(in->tid());
out->destination(in->source());
return true;
}
开发者ID:shtrom,项目名称:odtone,代码行数:25,代码来源:event_service.cpp
示例20: ODTONE_LOG
/**
* Check if there is a handler for this message and call it, else
* discard message.
*
* @param in The input message.
*/
void sac_dispatch::operator()(meta_message_ptr& in)
{
/** __no__ authentication at this point */
uint mid = in->mid();
ODTONE_LOG(1, "(sac) dispatching message with mid: ", mid);
//
// no thread safety because insertion should __only__ be made
// on MIHF initialization
//
std::map<uint, handler_t>::iterator it;
it = _callbacks.find(mid);
if(it != _callbacks.end()) {
handler_t process_message = it->second;
meta_message_ptr out(new meta_message);
out->tid(in->tid());
// send response if it was generated
try {
if (process_message(in, out))
_transmit(out);
} catch(mih::bad_tlv) {
ODTONE_LOG(1, "Discarding malformed message.");
} catch(unknown_link_sap) {
ODTONE_LOG(1, "Received message from an unknown Link SAP. Discarding message.");
} catch(unknown_mih_user) {
ODTONE_LOG(1, "Received message from an unknown MIH-User. Discarding message.");
}
} else {
ODTONE_LOG(1, "(sac) (warning) message with mid: ", mid,
" unknown, discarding.");
}
}
开发者ID:ATNoG,项目名称:ODTONE,代码行数:43,代码来源:service_access_controller.cpp
注:本文中的meta_message_ptr类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论