本文整理汇总了C++中CMultiXAppMsg::NotifyAny方法的典型用法代码示例。如果您正苦于以下问题:C++ CMultiXAppMsg::NotifyAny方法的具体用法?C++ CMultiXAppMsg::NotifyAny怎么用?C++ CMultiXAppMsg::NotifyAny使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CMultiXAppMsg
的用法示例。
在下文中一共展示了CMultiXAppMsg::NotifyAny方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Reply
bool CMultiXAppMsg::Reply(MultiXError Error,int32_t MsgCode, const CMultiXBufferArray &Bufs, int Flags,int Priority, uint32_t Timeout, void *Context,TMultiXProcID RoutedFrom)
{
if(ReplySent())
return false;
if(!this->NotifyAny())
return false;
if(!m_pProcess->SenderEnabled())
return false;
if(m_pProcess->RestartCount() != m_OwnerInstance)
return false;
if(RoutedFrom == 0)
RoutedFrom = m_pProcess->Owner()->ProcessID();
CMultiXAppMsg *Msg = m_pProcess->CreateNewAppMsg();
m_pProcess->AddToMsgQueue(m_pProcess->m_pOutQueue, Msg);
Msg->AllocateL7XMsg(MsgCode);
Msg->AddReceiverMsgID(this->SenderMsgID());
if(this->IsCtrlMsgFromTpm())
Flags |= FlagControlToTpm;
else if(this->IsCtrlMsgToTpm())
Flags |= FlagControlFromTpm;
if(Bufs.Count() == 0)
Flags &= ~CMultiXAppMsg::FlagResponseRequired;
Msg->AddInfo(Bufs,Flags | FlagMsgIsResponse,this->m_SessionID,Priority,Timeout,Context,Error,RoutedFrom,NULL,NULL,NULL,NULL);
if(Msg->NotifyAny())
m_pProcess->Send(*Msg);
else
{
m_pProcess->Send(*Msg);
delete Msg;
}
SetReplySent(true);
return true;
}
示例2: Send
bool CMultiXProcess::Send(int32_t MsgCode, const CMultiXBufferArray &Bufs,int Flags, const TMultiXSessionID &SessionID,int Priority, uint32_t Timeout, void *Context,TMultiXProcID RoutedFrom,const char *WSURL,const char *WSSoapAction,const char *WSDllFile,const char *WSDllFunction)
{
if(!SenderEnabled())
return false;
CMultiXAppMsg *Msg = CreateNewAppMsg();
AddToMsgQueue(m_pOutQueue,Msg);
Msg->AllocateL7XMsg(MsgCode);
if(RoutedFrom == 0)
RoutedFrom = Owner()->ProcessID();
Msg->AddInfo(Bufs,Flags & (~CMultiXAppMsg::FlagMsgIsResponse),SessionID,Priority,Timeout,Context,MultiXNoError,RoutedFrom,WSURL,WSSoapAction,WSDllFile,WSDllFunction);
if(Msg->NotifyAny())
return Send(*Msg);
else
{
Send(*Msg);
delete Msg;
}
return true;
}
示例3: OnAppMsg
bool CMultiXProcess::OnAppMsg(CMultiXMsg &Msg)
{
if(!ReceiverEnabled() || !SenderEnabled())
return false;
CMultiXAppMsg *OrgMsg = NULL;
CMultiXSession *Session = NULL;
CMultiXAppMsg *AppMsg = CreateNewAppMsg(&Msg);
//if(m_MsgCount++ == 1)
// m_LastPrintTime = Owner()->GetMilliClock();
m_LastMsgRecvMilliClock = Owner()->GetMilliClock();
AddToMsgQueue(m_pInQueue,AppMsg);
if(!AppMsg->ResponseRequired())
{
if(AppMsg->NotifyAny())
AppMsg->Reply(MultiXNoError);
}
if(AppMsg->IsResponse())
{
OrgMsg = AppMsg->ReceiverMsgID().GetObject();
if(OrgMsg != NULL)
{
Session = Owner()->FindSession(OrgMsg->SessionID());
OrgMsg->m_bKeep = false;
OrgMsg->ID().RemoveObject();
if(AppMsg->AppDataSize() || OrgMsg->ResponseRequired())
{
if(Session)
{
if(AppMsg->IsCtrlMsgFromTpm())
Session->OnDataReplyFromTpmReceived(*AppMsg,*OrgMsg);
else
Session->OnDataReplyReceivedNV(*AppMsg,*OrgMsg);
} else
{
if(AppMsg->IsCtrlMsgFromTpm())
OnDataReplyFromTpmReceived(*AppMsg,*OrgMsg);
else
OnDataReplyReceived(*AppMsg,*OrgMsg);
}
} else if(AppMsg->Error())
{
if(OrgMsg->NotifyError())
{
if(Session)
{
if(AppMsg->IsCtrlMsgFromTpm())
Session->OnSendMsgToTpmFailed(*OrgMsg);
else
Session->OnSendMsgFailedNV(*OrgMsg);
} else
{
if(AppMsg->IsCtrlMsgFromTpm())
OnSendMsgToTpmFailed(*OrgMsg);
else
OnSendMsgFailed(*OrgMsg);
}
}
} else
{
if(OrgMsg->NotifySuccess())
{
if(Session)
{
if(AppMsg->IsCtrlMsgFromTpm())
Session->OnSendMsgToTpmCompleted(*OrgMsg);
else
Session->OnSendMsgCompletedNV(*OrgMsg);
} else
{
if(AppMsg->IsCtrlMsgFromTpm())
OnSendMsgToTpmCompleted(*OrgMsg);
else
OnSendMsgCompleted(*OrgMsg);
}
}
}
} else // it is a response but the original does not exist
{
AppMsg->Reply(TpmErrUnableToForwardMsg);
}
} else
{
Session = Owner()->FindSession(AppMsg->SessionID(),true);
if(Session)
{
if(AppMsg->IsCtrlMsgFromTpm())
Session->OnNewMsgFromTpm(*AppMsg);
else
Session->OnNewMsgNV(*AppMsg);
} else
{
if(AppMsg->IsCtrlMsgFromTpm())
OnNewMsgFromTpm(*AppMsg);
else
OnNewMsg(*AppMsg);
}
//.........这里部分代码省略.........