| /* This Source Code Form is subject to the terms of the Mozilla Public |
| * License, v. 2.0. If a copy of the MPL was not distributed with this |
| * file, You can obtain one at http://mozilla.org/MPL/2.0/. |
| * |
| * Copyright 2018 (c) basysKom GmbH <opensource@basyskom.com> (Author: Peter Rustler) |
| */ |
| |
| #ifndef UA_PLUGIN_HISTORYDATABASE_H_ |
| #define UA_PLUGIN_HISTORYDATABASE_H_ |
| |
| #include <open62541/server.h> |
| |
| _UA_BEGIN_DECLS |
| |
| typedef struct UA_HistoryDatabase UA_HistoryDatabase; |
| |
| struct UA_HistoryDatabase { |
| void *context; |
| |
| void |
| (*deleteMembers)(UA_HistoryDatabase *hdb); |
| |
| /* This function will be called when a nodes value is set. |
| * Use this to insert data into your database(s) if polling is not suitable |
| * and you need to get all data changes. |
| * Set it to NULL if you do not need it. |
| * |
| * server is the server this node lives in. |
| * hdbContext is the context of the UA_HistoryDatabase. |
| * sessionId and sessionContext identify the session which set this value. |
| * nodeId is the node id for which data was set. |
| * historizing is the nodes boolean flag for historizing |
| * value is the new value. */ |
| void |
| (*setValue)(UA_Server *server, |
| void *hdbContext, |
| const UA_NodeId *sessionId, |
| void *sessionContext, |
| const UA_NodeId *nodeId, |
| UA_Boolean historizing, |
| const UA_DataValue *value); |
| |
| /* This function is called if a history read is requested with |
| * isRawReadModified set to false. Setting it to NULL will result in a |
| * response with statuscode UA_STATUSCODE_BADHISTORYOPERATIONUNSUPPORTED. |
| * |
| * server is the server this node lives in. |
| * hdbContext is the context of the UA_HistoryDatabase. |
| * sessionId and sessionContext identify the session which set this value. |
| * requestHeader, historyReadDetails, timestampsToReturn, releaseContinuationPoints |
| * nodesToReadSize and nodesToRead is the requested data from the client. It |
| * is from the request object. |
| * response the response to fill for the client. If the request is ok, there |
| * is no need to use it. Use this to set status codes other than |
| * "Good" or other data. You find an already allocated |
| * UA_HistoryReadResult array with an UA_HistoryData object in the |
| * extension object in the size of nodesToReadSize. If you are not |
| * willing to return data, you have to delete the results array, |
| * set it to NULL and set the resultsSize to 0. Do not access |
| * historyData after that. |
| * historyData is a proper typed pointer array pointing in the |
| * UA_HistoryReadResult extension object. use this to provide |
| * result data to the client. Index in the array is the same as |
| * in nodesToRead and the UA_HistoryReadResult array. */ |
| void |
| (*readRaw)(UA_Server *server, |
| void *hdbContext, |
| const UA_NodeId *sessionId, |
| void *sessionContext, |
| const UA_RequestHeader *requestHeader, |
| const UA_ReadRawModifiedDetails *historyReadDetails, |
| UA_TimestampsToReturn timestampsToReturn, |
| UA_Boolean releaseContinuationPoints, |
| size_t nodesToReadSize, |
| const UA_HistoryReadValueId *nodesToRead, |
| UA_HistoryReadResponse *response, |
| UA_HistoryData * const * const historyData); |
| |
| void |
| (*updateData)(UA_Server *server, |
| void *hdbContext, |
| const UA_NodeId *sessionId, |
| void *sessionContext, |
| const UA_RequestHeader *requestHeader, |
| const UA_UpdateDataDetails *details, |
| UA_HistoryUpdateResult *result); |
| |
| void |
| (*deleteRawModified)(UA_Server *server, |
| void *hdbContext, |
| const UA_NodeId *sessionId, |
| void *sessionContext, |
| const UA_RequestHeader *requestHeader, |
| const UA_DeleteRawModifiedDetails *details, |
| UA_HistoryUpdateResult *result); |
| |
| /* Add more function pointer here. |
| * For example for read_event, read_modified, read_processed, read_at_time */ |
| }; |
| |
| _UA_END_DECLS |
| |
| #endif /* UA_PLUGIN_HISTORYDATABASE_H_ */ |