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; }