public override Task<ApiResult> SetDatapoint(DatapointMessage request, ServerCallContext context)
        {
            var nodeId = new NodeId(2, request.Identifier);

            if (_serverApplication.HasDatapoint(nodeId))
            {
                return UpdateDatapoint(request, context);
            }

            return AddDatapoint(request, context);
        }
        public override Task<ApiResult> UpdateDatapoint(DatapointMessage request, ServerCallContext context)
        {
            var nodeId = new NodeId(2, request.Identifier);

            if (!_serverApplication.HasDatapoint(nodeId))
            {
                return Task.FromResult(new ApiResult() { ResultCode = ResultCode.Error, Message = "Datapoint does not exist" });
            }

            _serverApplication.UpdateDatapoint(nodeId, request.Value);

            return Task.FromResult(new ApiResult() { ResultCode = ResultCode.Success, Message = "Datapoint has been updated" });
        }
        public override Task<ApiResult> AddDatapoint(DatapointMessage request, ServerCallContext context)
        {
            var nodeId = new NodeId(2, request.Identifier);

            if (_serverApplication.HasDatapoint(nodeId))
            {
                return Task.FromResult(new ApiResult() { ResultCode = ResultCode.Error, Message = "Datapoint already exists" });
            }

            _serverApplication.AddDatapoint(nodeId, request.Value);

            return Task.FromResult(new ApiResult() { ResultCode = ResultCode.Success, Message = "Datapoint has been added" });
        }