void CommandQueue::AcceptCommand(const T& arType, size_t aIndex, std::queue<T>& arQueue, int aSequence, IResponseAcceptor* apRspAcceptor) { { apl::CriticalSection cs(&mLock); arQueue.push(arType); mTypeQueue.push(CommandData(arType.GetType(), aIndex, aSequence, apRspAcceptor)); } if(mpNotifier != NULL) mpNotifier->Notify(); }
void NetworkInterfaceImpl::startCommand(const TaskExecutor::CallbackHandle& cbHandle, const RemoteCommandRequest& request, const RemoteCommandCompletionFn& onFinish) { LOG(2) << "Scheduling " << request.cmdObj.firstElementFieldName() << " to " << request.target; stdx::lock_guard<stdx::mutex> lk(_mutex); _pending.push_back(CommandData()); CommandData& cd = _pending.back(); cd.cbHandle = cbHandle; cd.request = request; cd.onFinish = onFinish; fassert(28730, _pool.schedule([this]() -> void { _runOneCommand(); })); }