本文整理汇总了C++中CDataAccessor::getOpCode方法的典型用法代码示例。如果您正苦于以下问题:C++ CDataAccessor::getOpCode方法的具体用法?C++ CDataAccessor::getOpCode怎么用?C++ CDataAccessor::getOpCode使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CDataAccessor
的用法示例。
在下文中一共展示了CDataAccessor::getOpCode方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: convertIntegerToString
bool L1InterfaceStub::processClientDeallocateRequest(CDataAccessor & accessor,
const iviLink::Ipc::DirectionID dirId)
{
UInt32 channel_id = accessor.getChannelID();
if(CA_SERVICE_CHANNEL !=channel_id)
{
LOG4CPLUS_INFO(logger, "L1InterfaceStub::processClientDeallocateRequest() => "
"Deallocate Channel Request: ChID = " + convertIntegerToString(channel_id));
mRegistryMutex.lock();
tChannelsRegistryMap::iterator iter = mL1ChannelRegistry.find(channel_id);
if (iter != mL1ChannelRegistry.end())
{
iter->second.mState = E_TRANSITION_CLIENT;
sendRequest(accessor);
assert(mTimeoutManager);
mTimeoutManager->addSubscriber(new RequestTimeout(static_cast<tOpCode>
(accessor.getOpCode()),channel_id,this ), 250000);
// ret = ERR_OK;
}
else
{
LOG4CPLUS_INFO(logger, "L1InterfaceStub::processClientDeallocateRequest() "
"=> Deallocate Channel Request: ChID = " +
convertIntegerToString(channel_id) + " NOT FOUND!");
// ret = ERR_NOTFOUND;
}
mRegistryMutex.unlock();
}
return false;
}
示例2: sizeof
ConnectivityAgentError L1InterfaceStub::sendRequest( CDataAccessor & accessor)
{
LOG4CPLUS_TRACE_METHOD(logger, __PRETTY_FUNCTION__);
Buffer buf;
UInt32 offset = 0;
accessor.printContent();
buf.getFilledSize() = accessor.getObjectSize() + sizeof(UInt16);
buf.reserveSize(buf.getFilledSize());
*reinterpret_cast<UInt16*> (buf.getData() + offset) =
ByteOrder::hton16((UInt16)buf.getFilledSize());
offset += 2;
*reinterpret_cast<UInt32*> (buf.getData() + offset) =
ByteOrder::hton32(accessor.getOpCode());
offset += 4;
*reinterpret_cast<UInt32*> (buf.getData() + offset) =
ByteOrder::hton32(accessor.getChannelID());
offset += 4;
*reinterpret_cast<UInt32*> (buf.getData() + offset) =
ByteOrder::hton32(accessor.getDataSize());
offset += 4;
*reinterpret_cast<UInt32*> (buf.getData() + offset) =
ByteOrder::hton32(accessor.getErrorCode());
offset += 4;
if (accessor.getDataSize())
{
memcpy(buf.getData() + offset,accessor.getData(), accessor.getDataSize() );
}
ConnectivityAgentError ret = mL1ChannelRegistry[CA_SERVICE_CHANNEL].
mpSourceAgent->fillBuffer(buf);
buf.forgetData();
return ret;
}
示例3: deallocateChannel
ERROR_CODE CConnectivityAgentProxy::deallocateChannel(UInt32 channel_id)
{
LOG4CPLUS_TRACE_METHOD(logger, __PRETTY_FUNCTION__);
LOG4CPLUS_INFO(logger,
"CConnectivityAgentProxy::deallocateChannel(chID = "
+ convertIntegerToString(channel_id) + ")");
ERROR_CODE ret = ERR_NOTFOUND;
mRegistryMutex.lockWrite();
// Channel info will be saved in info and removed from registry here.
// In case of some errors, it will be restored in registry.
tChannelInfo info;
tChannelsRegistryMap::iterator iter = mChannelRegistry.find(channel_id);
if (iter == mChannelRegistry.end())
{
LOG4CPLUS_ERROR(logger,
"CConnectivityAgentProxy::deallocateChannel(chID = "
+ convertIntegerToString(channel_id) + ") => ERROR: Channel not found! ");
} else
{
ret = ERR_OK;
info = iter->second;
iter->second.mChannelBuffer.forgetData();
mChannelRegistry.erase(iter);
mChannelOnDeallocSet.insert(channel_id);
}
mRegistryMutex.unlockWrite();
if (ret != ERR_OK)
return ret;
CDataAccessor requestDA;
requestDA.setChannelID(channel_id);
requestDA.setOpCode(E_DEALLOCATE_CHANNEL);
UInt8* buf = new UInt8[requestDA.getObjectSize()];
requestDA.copyToRawArray(buf);
// response will be sent later as a separate request
UInt32 respSize = 0;
CError err = mpIpc->request(mMsgIdGen.next(), buf, requestDA.getObjectSize(), NULL, respSize);
delete[] buf;
if (!err.isNoError())
{
LOG4CPLUS_WARN(logger, static_cast<std::string>(err));
ret = ERR_FAIL;
} else
{
CDataAccessor responseDA;
mDeallocateRequestResultCond.lock();
{
LOG4CPLUS_INFO(logger,
"CConnectivityAgentProxy::deallocateChannel waiting for mLastRequestResultDA");
while (mDeallocateRequestResultMap.find(channel_id) == mDeallocateRequestResultMap.end())
{
LOG4CPLUS_INFO(logger, "before wait");
mDeallocateRequestResultCond.wait();
LOG4CPLUS_INFO(logger, "after wait");
}
responseDA = mDeallocateRequestResultMap[channel_id];
mDeallocateRequestResultMap.erase(channel_id);
}
mDeallocateRequestResultCond.unlock();
if (responseDA.getData())
{
if ((E_DEALLOCATE_CHANNEL_RESP == responseDA.getOpCode())
&& (channel_id == responseDA.getChannelID()))
{
UInt32 data = 0;
memcpy(&data, responseDA.getData(), sizeof(UInt32));
responseDA.resetAll();
ret = static_cast<ERROR_CODE>(data);
} else
{
LOG4CPLUS_ERROR(logger,
"CConnectivityAgentProxy::deallocateChannel() => ERROR: wrong response type("
+ convertIntegerToString(responseDA.getOpCode())
+ ") from Agent !!! ");
ret = ERR_WRONG_SEQUENCE;
}
} else
{
LOG4CPLUS_INFO(logger, "CConnectivityAgentProxy::deallocateChannel() => "
"channel already deleted form other side");
ret = ERR_OK;
}
}
if (ret != ERR_OK)
{
// something gone wrong, we need to restore information in registry
mRegistryMutex.lockWrite();
if (mChannelRegistry.find(channel_id) != mChannelRegistry.end())
{
LOG4CPLUS_WARN(logger, "CConnectivityAgentProxy::deallocateChannel: "
//.........这里部分代码省略.........