Пример #1
0
JBoolean
CMLink::Send
	(
	CMCommand* command
	)
{
	if (command->GetState() != CMCommand::kUnassigned)
		{
		assert( command->GetTransactionID() != 0 );
		return kJFalse;
		}
	else
		{
		command->SetTransactionID(GetNextTransactionID());

		if (command->IsBackground())
			{
			itsBackgroundQ->Append(command);
			}
		else
			{
			itsForegroundQ->Append(command);
			}
		RunNextCommand();

		return kJTrue;
		}
}
Пример #2
0
BOOL CTransactionManager::Add(MIBValue *pValue, int nCount, WORD *nTransactionID)
{
    WORD        nTrID;
    cetime_t    nTime;
    BOOL        bOk = FALSE;

    m_TransactionLocker.Lock();
    {
        nTrID = GetNextTransactionID();
        time(&nTime);

        if(CreateTransactionRequest(nTrID, pValue) &&
           AppendEndDeviceTransaction(nTrID, nTime, pValue, nCount) &&
           UpdateTransactionHistory(nTrID, nTime, TR_STATE_WAIT, IF4ERR_NOERROR) &&
           UpdateTransactionID(nTrID)) {
            *nTransactionID = nTrID;
            bOk = TRUE;
        }else {
            DeleteTransaction(nTrID);
        }
    }
    m_TransactionLocker.Unlock();

	return bOk;
}