21 OpcUa_Boolean nEnab,bBlOnAdd;
22 OpcUa_Int32 iMinThr =1,iMaxThr=10,iMaxJobs=20;
23 OpcUa_UInt32 nTimeout;
24 pServer->getServerConfig()->getStackThreadPoolSettings(nEnab,iMinThr,iMaxThr,iMaxJobs,bBlOnAdd,nTimeout);
60 IOManagerCallback* pCallback,
61 const ServiceContext& serviceContext,
62 OpcUa_UInt32 hTransaction,
63 OpcUa_UInt32 totalItemCountHint,
65 OpcUa_TimestampsToReturn timestampsToReturn,
66 TransactionType transactionType,
67 OpcUa_Handle& hIOManagerContext)
69 TRACE1_INOUT(SERVER_CORE, UA_T
"--> IOManagerSDO::beginTransaction %d",transactionType);
70 UaStatus ret = OpcUa_Good;
73 pTransaction->
setSession(serviceContext.pSession());
83 if (transactionType == IOManager::TransactionWrite)
87 if ((transactionType == IOManager::TransactionMonitorBegin) ||
88 (transactionType == IOManager::TransactionMonitorModify) ||
89 (transactionType == IOManager::TransactionMonitorStop) )
93 if ( (transactionType == IOManager::TransactionRead) ||
94 (transactionType == IOManager::TransactionWrite) ||
95 (transactionType == IOManager::TransactionMonitorBegin))
102 hIOManagerContext = (OpcUa_Handle)pTransaction;
103 TRACE1_INOUT(SERVER_CORE, UA_T
"<-- IOManagerSDO::beginTransaction [ret=0x%lx]", ret.statusCode());
113 TRACE0_INOUT(SERVER_CORE, UA_T
"--> IOManagerSDO::finishTransaction");
114 UaStatus ret = OpcUa_Good;
115 OpcUa_UInt32 mMaxPoolSize, mMumberOfJobsInPool;
120 OpcUa_UInt32 mThread, uThread;
122 m_pThreadPool->getCapacity(mThread, uThread ,mMaxPoolSize,mMumberOfJobsInPool);
124 if ((uThread < mThread) || (mMumberOfJobsInPool < mMaxPoolSize)) {
146 LOG(
Log::DBG) <<
"The number of SDO job exceeds maximum !";
147 ret = OpcUa_BadResourceUnavailable;
181 TRACE1_INOUT(SERVER_CORE, UA_T
"<-- IOManagerSDO::finishTransaction [ret=0x%lx]", ret.statusCode());
190 case IOManager::TransactionRead:
195 case IOManager::TransactionWrite:
200 case IOManager::TransactionMonitorBegin:
205 case IOManager::TransactionMonitorModify:
210 case IOManager::TransactionMonitorStop:
229 OpcUa_Handle hIOManagerContext,
230 OpcUa_UInt32 callbackHandle,
231 VariableHandle* pVariableHandle,
232 OpcUa_ReadValueId* pReadValueId)
234 OpcUa_ReferenceParameter(pReadValueId);
235 UaStatus ret = OpcUa_Good;
236 UaDataValue uaDataValue;
246 pVariableHandle->addReference();
252 ret = OpcUa_BadNotReadable;
258 ret = OpcUa_BadInvalidArgument;
272 OpcUa_Handle hIOManagerContext,
273 OpcUa_UInt32 callbackHandle,
274 VariableHandle* pVariableHandle,
275 OpcUa_WriteValue* pWriteValue)
277 UaStatus ret = OpcUa_Good;
288 pVariableHandle->addReference();
294 ret = OpcUa_BadNotWritable;
300 ret = OpcUa_BadInvalidArgument;
315 OpcUa_Handle hIOManagerContext,
316 OpcUa_UInt32 callbackHandle,
317 IOVariableCallback* pIOVariableCallback,
318 VariableHandle* pVariableHandle,
319 MonitoringContext& monitoringContext)
321 OpcUa_ReferenceParameter(hIOManagerContext);
322 OpcUa_ReferenceParameter(callbackHandle);
323 OpcUa_ReferenceParameter(pIOVariableCallback);
324 OpcUa_ReferenceParameter(pVariableHandle);
325 OpcUa_ReferenceParameter(monitoringContext);
326 return OpcUa_BadNotSupported;
389 OpcUa_Handle hIOManagerContext,
390 OpcUa_UInt32 callbackHandle,
391 OpcUa_UInt32 hIOVariable,
392 MonitoringContext& monitoringContext)
394 OpcUa_ReferenceParameter(hIOManagerContext);
395 OpcUa_ReferenceParameter(callbackHandle);
396 OpcUa_ReferenceParameter(hIOVariable);
397 OpcUa_ReferenceParameter(monitoringContext);
398 return OpcUa_BadNotSupported;
453 OpcUa_Handle hIOManagerContext,
454 OpcUa_UInt32 callbackHandle,
455 OpcUa_UInt32 hIOVariable)
457 OpcUa_ReferenceParameter(hIOManagerContext);
458 OpcUa_ReferenceParameter(callbackHandle);
459 OpcUa_ReferenceParameter(hIOVariable);
460 return OpcUa_BadNotSupported;
493 UaDataValue dataValue;
501 if (csdo->accessLevel() & Ua_AccessLevel_CurrentRead) {
504 csdo->getAttributeValue(m_pTransactionContext->
pSession(),vhuanode->m_AttributeID,dataValue);
505 TRACE2_INOUT(SERVER_CORE, UA_T
"<-- IOManagerSDO::Read %s [value=%s]",csdo->displayName(m_pTransactionContext->
pSession()).toFullString().toUtf8() ,UaVariant(*dataValue.value()).toFullString().toUtf8() );
508 dataValue.setStatusCode(ret.statusCode());
509 dataValue.setServerTimestamp(UaDateTime::now());
510 dataValue.setSourceTimestamp(UaDateTime::now());
514 dataValue.setStatusCode(OpcUa_BadNotReadable);
515 dataValue.setServerTimestamp(UaDateTime::now());
516 dataValue.setSourceTimestamp(UaDateTime::now());
529 UaDataValue dataValue;
537 if (csdo->accessLevel() & Ua_AccessLevel_CurrentWrite) {
539 ret = csdo->
write(dataValue);
541 TRACE2_INOUT(SERVER_CORE, UA_T
"<-- IOManagerSDO::write successful %s [value=%s]", csdo->displayName(m_pTransactionContext->
pSession()).toFullString().toUtf8(), UaVariant(*dataValue.value()).toFullString().toUtf8());
544 dataValue.setStatusCode(ret.statusCode());
545 dataValue.setServerTimestamp(UaDateTime::now());
546 dataValue.setSourceTimestamp(UaDateTime::now());
551 dataValue.setStatusCode(OpcUa_BadNotWritable);
552 dataValue.setServerTimestamp(UaDateTime::now());
553 dataValue.setSourceTimestamp(UaDateTime::now());