diff --git a/WWCP_OCPPv2.1/Extensions/BinaryStreamsExtensions/Messages/BinaryDataTransferRequest.cs b/WWCP_OCPPv2.1/Extensions/BinaryStreamsExtensions/Messages/BinaryDataTransferRequest.cs
index 6917f7c98..a4288d52f 100644
--- a/WWCP_OCPPv2.1/Extensions/BinaryStreamsExtensions/Messages/BinaryDataTransferRequest.cs
+++ b/WWCP_OCPPv2.1/Extensions/BinaryStreamsExtensions/Messages/BinaryDataTransferRequest.cs
@@ -165,11 +165,17 @@ this.Format. GetHashCode() * 3 ^
/// The request identification.
/// The charging station/networking node identification.
/// The network path of the request.
+ /// An optional request timestamp.
+ /// An optional request timeout.
+ /// An optional event tracking identification for correlating this request with other events.
/// An optional delegate to parse custom BinaryDataTransfer requests.
public static BinaryDataTransferRequest Parse(Byte[] Binary,
Request_Id RequestId,
NetworkingNode_Id DestinationId,
NetworkPath NetworkPath,
+ DateTime? RequestTimestamp = null,
+ TimeSpan? RequestTimeout = null,
+ EventTracking_Id? EventTrackingId = null,
CustomBinaryParserDelegate? CustomDataTransferRequestParser = null)
{
@@ -179,6 +185,9 @@ public static BinaryDataTransferRequest Parse(Byte[]
NetworkPath,
out var binaryDataTransferRequest,
out var errorResponse,
+ RequestTimestamp,
+ RequestTimeout,
+ EventTrackingId,
CustomDataTransferRequestParser))
{
return binaryDataTransferRequest;
@@ -202,6 +211,9 @@ public static BinaryDataTransferRequest Parse(Byte[]
/// The network path of the request.
/// The parsed BinaryDataTransfer request.
/// An optional error response.
+ /// An optional request timestamp.
+ /// An optional request timeout.
+ /// An optional event tracking identification for correlating this request with other events.
/// An optional delegate to parse custom BinaryDataTransfer requests.
public static Boolean TryParse(Byte[] Binary,
Request_Id RequestId,
@@ -209,6 +221,9 @@ public static Boolean TryParse(Byte[]
NetworkPath NetworkPath,
[NotNullWhen(true)] out BinaryDataTransferRequest? BinaryDataTransferRequest,
[NotNullWhen(false)] out String? ErrorResponse,
+ DateTime? RequestTimestamp = null,
+ TimeSpan? RequestTimeout = null,
+ EventTracking_Id? EventTrackingId = null,
CustomBinaryParserDelegate? CustomBinaryDataTransferRequestParser = null)
{
@@ -317,9 +332,9 @@ public static Boolean TryParse(Byte[]
null, //signatures,
RequestId,
- null,
- null,
- null,
+ RequestTimestamp,
+ RequestTimeout,
+ EventTrackingId,
NetworkPath
);
diff --git a/WWCP_OCPPv2.1/NetworkingNode/Messages/IncomingMessages/BinaryDataStreamsExtensions/BinaryDataTransfer.cs b/WWCP_OCPPv2.1/NetworkingNode/Messages/IncomingMessages/BinaryDataStreamsExtensions/BinaryDataTransfer.cs
deleted file mode 100644
index 175c2e568..000000000
--- a/WWCP_OCPPv2.1/NetworkingNode/Messages/IncomingMessages/BinaryDataStreamsExtensions/BinaryDataTransfer.cs
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (c) 2014-2024 GraphDefined GmbH
- * This file is part of WWCP OCPP
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#region Usings
-
-using org.GraphDefined.Vanaheimr.Hermod;
-using org.GraphDefined.Vanaheimr.Hermod.WebSocket;
-
-using cloud.charging.open.protocols.OCPP;
-using cloud.charging.open.protocols.OCPPv2_1.WebSockets;
-
-#endregion
-
-namespace cloud.charging.open.protocols.OCPPv2_1.NetworkingNode
-{
-
- ///
- /// An incoming BinaryDataTransfer request.
- ///
- /// The timestamp of the request.
- /// The sender of the request.
- /// The HTTP Web Socket connection.
- /// The BinaryDataTransfer request.
- public delegate Task
-
- OnBinaryDataTransferRequestReceivedDelegate(DateTime Timestamp,
- IEventSender Sender,
- IWebSocketConnection Connection,
- BinaryDataTransferRequest Request);
-
-
- ///
- /// An incoming binary data transfer from the given charging station.
- ///
- /// The timestamp of the request.
- /// The sender of the request.
- /// The HTTP Web Socket connection.
- /// The BinaryDataTransfer request.
- /// A token to cancel this request.
- public delegate Task
-
- OnBinaryDataTransferDelegate(DateTime Timestamp,
- IEventSender Sender,
- IWebSocketConnection Connection,
- BinaryDataTransferRequest Request,
- CancellationToken CancellationToken);
-
-
-
-
-}
diff --git a/WWCP_OCPPv2.1/NetworkingNode/Messages/IncomingMessages/DataTransfer.cs b/WWCP_OCPPv2.1/NetworkingNode/Messages/IncomingMessages/DataTransfer.cs
deleted file mode 100644
index a5d9ee096..000000000
--- a/WWCP_OCPPv2.1/NetworkingNode/Messages/IncomingMessages/DataTransfer.cs
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (c) 2014-2024 GraphDefined GmbH
- * This file is part of WWCP OCPP
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#region Usings
-
-using org.GraphDefined.Vanaheimr.Hermod;
-using org.GraphDefined.Vanaheimr.Hermod.WebSocket;
-
-#endregion
-
-namespace cloud.charging.open.protocols.OCPPv2_1.NetworkingNode
-{
-
- ///
- /// A received DataTransfer request.
- ///
- /// The timestamp of the DataTransfer request.
- /// The sender of the DataTransfer request.
- /// The HTTP WebSocket server connection.
- /// The DataTransfer request.
- public delegate Task
-
- OnDataTransferRequestReceivedDelegate(DateTime Timestamp,
- IEventSender Sender,
- IWebSocketConnection Connection,
- DataTransferRequest Request);
-
-
- ///
- /// Process a received DataTransfer request.
- ///
- /// The timestamp of the DataTransfer request.
- /// The sender of the DataTransfer request.
- /// The HTTP WebSocket server connection.
- /// The DataTransfer request.
- /// A token to cancel this request.
- public delegate Task
-
- OnDataTransferDelegate(DateTime Timestamp,
- IEventSender Sender,
- IWebSocketConnection Connection,
- DataTransferRequest Request,
- CancellationToken CancellationToken);
-
-
- ///
- /// A sent DataTransfer response.
- ///
- /// The timestamp of the DataTransfer request.
- /// The sender of the DataTransfer request.
- /// The HTTP WebSocket server connection.
- /// The DataTransfer request.
- /// The DataTransfer response.
- /// The runtime of the request.
- public delegate Task
-
- OnDataTransferResponseSentDelegate(DateTime Timestamp,
- IEventSender Sender,
- IWebSocketConnection Connection,
- DataTransferRequest Request,
- DataTransferResponse Response,
- TimeSpan Runtime);
-
-}
diff --git a/WWCP_OCPPv2.1/NetworkingNode/Messages/OutgoingMessages/BinaryDataStreamsExtensions/BinaryDataTransfer.cs b/WWCP_OCPPv2.1/NetworkingNode/Messages/OutgoingMessages/BinaryDataStreamsExtensions/BinaryDataTransfer.cs
deleted file mode 100644
index 5f282702b..000000000
--- a/WWCP_OCPPv2.1/NetworkingNode/Messages/OutgoingMessages/BinaryDataStreamsExtensions/BinaryDataTransfer.cs
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/WWCP_OCPPv2.1/NetworkingNode/Messages/OutgoingMessages/DataTransfer.cs b/WWCP_OCPPv2.1/NetworkingNode/Messages/OutgoingMessages/DataTransfer.cs
deleted file mode 100644
index 5b3599991..000000000
--- a/WWCP_OCPPv2.1/NetworkingNode/Messages/OutgoingMessages/DataTransfer.cs
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (c) 2014-2024 GraphDefined GmbH
- * This file is part of WWCP OCPP
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#region Usings
-
-using org.GraphDefined.Vanaheimr.Hermod;
-using org.GraphDefined.Vanaheimr.Hermod.WebSocket;
-
-using cloud.charging.open.protocols.OCPPv2_1.WebSockets;
-
-#endregion
-
-namespace cloud.charging.open.protocols.OCPPv2_1.NetworkingNode
-{
-
- ///
- /// A delegate called whenever a DataTransfer request was sent.
- ///
- /// The timestamp of the request logging.
- /// The sender of the request.
- /// The connection of the request.
- /// The request.
- /// The result of the send message process.
- public delegate Task OnDataTransferRequestSentDelegate(DateTime Timestamp,
- IEventSender Sender,
- IWebSocketConnection Connection,
- DataTransferRequest Request,
- SentMessageResults SendMessageResult);
-
- ///
- /// A delegate called whenever a response to a DataTransfer request was received.
- ///
- /// The timestamp of the response logging.
- /// The sender of the request/response.
- /// The request.
- /// The response.
- /// The runtime of the request/response.
- public delegate Task OnDataTransferResponseReceivedDelegate(DateTime Timestamp,
- IEventSender Sender,
- DataTransferRequest Request,
- DataTransferResponse Response,
- TimeSpan Runtime);
-
-}
diff --git a/WWCP_OCPPv2.1/NetworkingNode/OCPPAdapter/Forwarding/Common/BinaryDataStreamsExtensions/BinaryDataTransfer.cs b/WWCP_OCPPv2.1/NetworkingNode/OCPPAdapter/Forwarding/Common/BinaryDataStreamsExtensions/BinaryDataTransfer.cs
index 17f421d98..210804445 100644
--- a/WWCP_OCPPv2.1/NetworkingNode/OCPPAdapter/Forwarding/Common/BinaryDataStreamsExtensions/BinaryDataTransfer.cs
+++ b/WWCP_OCPPv2.1/NetworkingNode/OCPPAdapter/Forwarding/Common/BinaryDataStreamsExtensions/BinaryDataTransfer.cs
@@ -94,6 +94,9 @@ public async Task
BinaryRequestMessage.NetworkPath,
out var request,
out var errorResponse,
+ BinaryRequestMessage.RequestTimestamp,
+ BinaryRequestMessage.RequestTimeout - Timestamp.Now,
+ BinaryRequestMessage.EventTrackingId,
parentNetworkingNode.OCPP.CustomBinaryDataTransferRequestParser))
{
return ForwardingDecision.REJECT(errorResponse);
diff --git a/WWCP_OCPPv2.1/NetworkingNode/OCPPAdapter/Incoming/Common/BinaryDataStreamsExtensions/BinaryDataTransfer.cs b/WWCP_OCPPv2.1/NetworkingNode/OCPPAdapter/Incoming/Common/BinaryDataStreamsExtensions/BinaryDataTransfer.cs
index 0b0dc164d..8452aa8e8 100644
--- a/WWCP_OCPPv2.1/NetworkingNode/OCPPAdapter/Incoming/Common/BinaryDataStreamsExtensions/BinaryDataTransfer.cs
+++ b/WWCP_OCPPv2.1/NetworkingNode/OCPPAdapter/Incoming/Common/BinaryDataStreamsExtensions/BinaryDataTransfer.cs
@@ -22,60 +22,116 @@
using org.GraphDefined.Vanaheimr.Hermod.WebSocket;
using cloud.charging.open.protocols.OCPPv2_1.WebSockets;
-using cloud.charging.open.protocols.OCPPv2_1.CS;
-using Org.BouncyCastle.Asn1.Ocsp;
#endregion
namespace cloud.charging.open.protocols.OCPPv2_1.NetworkingNode
{
- #region Delegates
+ #region Logging Delegates
///
- /// An incoming binary data transfer response.
+ /// A logging delegate called whenever a BinaryDataTransfer request was received.
///
- /// The timestamp of the request.
+ /// The logging timestamp.
/// The sender of the request.
- /// The HTTP Web Socket connection.
+ /// The connection of the request.
/// The BinaryDataTransfer request.
- /// The stop transaction response.
- /// The runtime of the request.
+ /// An optional cancellation token.
public delegate Task
- OnBinaryDataTransferResponseSentDelegate(DateTime Timestamp,
- IEventSender Sender,
- IWebSocketConnection Connection,
- BinaryDataTransferRequest Request,
- BinaryDataTransferResponse Response,
- TimeSpan Runtime);
+ OnBinaryDataTransferRequestReceivedDelegate(DateTime Timestamp,
+ IEventSender Sender,
+ IWebSocketConnection Connection,
+ BinaryDataTransferRequest Request,
+ CancellationToken CancellationToken = default);
///
- /// An incoming binary data transfer response.
+ /// A logging delegate called whenever a BinaryDataTransfer response was received.
///
- /// The timestamp of the request.
+ /// The logging timestamp.
+ /// The sender of the response.
+ /// The connection of the response.
+ /// The optional request.
+ /// The response.
+ /// The optional runtime of the request/response pair.
+ /// An optional cancellation token.
+ public delegate Task OnBinaryDataTransferResponseReceivedDelegate(DateTime Timestamp,
+ IEventSender Sender,
+ IWebSocketConnection Connection,
+ BinaryDataTransferRequest? Request,
+ BinaryDataTransferResponse Response,
+ TimeSpan? Runtime,
+ CancellationToken CancellationToken = default);
+
+
+ ///
+ /// A logging delegate called whenever a BinaryDataTransfer request error was received.
+ ///
+ /// The logging timestamp.
/// The sender of the request.
- /// The HTTP Web Socket connection.
- /// The optional BinaryDataTransfer request.
- /// The RequestErrorMessage.
- /// The runtime of the request.
- public delegate Task
+ /// The connection of the request.
+ /// The optional request.
+ /// The request error.
+ /// The optional runtime of the request/request error pair.
+ /// An optional cancellation token.
+ public delegate Task OnBinaryDataTransferRequestErrorReceivedDelegate(DateTime Timestamp,
+ IEventSender Sender,
+ IWebSocketConnection Connection,
+ BinaryDataTransferRequest? Request,
+ OCPP_BinaryRequestErrorMessage RequestErrorMessage,
+ TimeSpan? Runtime,
+ CancellationToken CancellationToken = default);
- OnBinaryDataTransferRequestErrorSentDelegate(DateTime Timestamp,
- IEventSender Sender,
- IWebSocketConnection Connection,
- BinaryDataTransferRequest? Request,
- OCPP_JSONRequestErrorMessage RequestErrorMessage,
- TimeSpan Runtime);
+
+ ///
+ /// A logging delegate called whenever a BinaryDataTransfer response error was received.
+ ///
+ /// The logging timestamp.
+ /// The sender of the response error.
+ /// The connection of the response error.
+ /// The optional request.
+ /// The optional response.
+ /// The ResponseErrorMessage.
+ /// The optional runtime of the request.
+ /// An optional cancellation token.
+ public delegate Task OnBinaryDataTransferResponseErrorReceivedDelegate(DateTime Timestamp,
+ IEventSender Sender,
+ IWebSocketConnection Connection,
+ BinaryDataTransferRequest? Request,
+ BinaryDataTransferResponse? Response,
+ OCPP_BinaryResponseErrorMessage ResponseErrorMessage,
+ TimeSpan? Runtime,
+ CancellationToken CancellationToken = default);
#endregion
+ ///
+ /// A delegate called whenever a BinaryDataTransfer response is expected
+ /// for a received BinaryDataTransfer request.
+ ///
+ /// The logging timestamp.
+ /// The sender of the request.
+ /// The connection of the request.
+ /// The BinaryDataTransfer request.
+ /// An optional cancellation token.
+ public delegate Task
+
+ OnBinaryDataTransferDelegate(DateTime Timestamp,
+ IEventSender Sender,
+ IWebSocketConnection Connection,
+ BinaryDataTransferRequest Request,
+ CancellationToken CancellationToken = default);
+
+
public partial class OCPPWebSocketAdapterIN : IOCPPWebSocketAdapterIN
{
- #region Events
+ // Wired via reflection!
+
+ #region Receive BinaryDataTransferRequest
///
/// An event sent whenever a BinaryDataTransfer request was received.
@@ -87,9 +143,6 @@ public partial class OCPPWebSocketAdapterIN : IOCPPWebSocketAdapterIN
///
public event OnBinaryDataTransferDelegate? OnBinaryDataTransfer;
- #endregion
-
- #region Receive BinaryDataTransferRequest (wired via reflection!)
public async Task
@@ -115,6 +168,9 @@ public async Task
NetworkPath,
out var request,
out var errorResponse,
+ RequestTimestamp,
+ parentNetworkingNode.OCPP.DefaultRequestTimeout,
+ EventTrackingId,
parentNetworkingNode.OCPP.CustomBinaryDataTransferRequestParser)) {
BinaryDataTransferResponse? response = null;
@@ -155,7 +211,8 @@ await Task.WhenAll(
Timestamp.Now,
parentNetworkingNode,
WebSocketConnection,
- request
+ request,
+ CancellationToken
))
);
@@ -183,11 +240,13 @@ await HandleErrors(
var responseTasks = OnBinaryDataTransfer?.
GetInvocationList()?.
- SafeSelect(subscriber => (subscriber as OnBinaryDataTransferDelegate)?.Invoke(Timestamp.Now,
- parentNetworkingNode,
- WebSocketConnection,
- request,
- CancellationToken)).
+ SafeSelect(subscriber => (subscriber as OnBinaryDataTransferDelegate)?.Invoke(
+ Timestamp.Now,
+ parentNetworkingNode,
+ WebSocketConnection,
+ request,
+ CancellationToken
+ )).
ToArray();
response = responseTasks?.Length > 0
@@ -284,106 +343,241 @@ await HandleErrors(
#endregion
- }
-
- public partial class OCPPWebSocketAdapterOUT : IOCPPWebSocketAdapterOUT
- {
-
- #region Send OnBinaryDataTransferResponseSent event
+ #region Receive BinaryDataTransferResponse
///
- /// An event sent whenever a response to an incoming BinaryDataTransfer request was sent.
+ /// An event fired whenever a BinaryDataTransfer response was received.
///
- public event OnBinaryDataTransferResponseSentDelegate? OnBinaryDataTransferResponseSent;
-
- public async Task SendOnBinaryDataTransferResponseSent(DateTime Timestamp,
- IEventSender Sender,
- IWebSocketConnection Connection,
- BinaryDataTransferRequest Request,
- BinaryDataTransferResponse Response,
- TimeSpan Runtime)
+ public event OnBinaryDataTransferResponseReceivedDelegate? OnBinaryDataTransferResponseReceived;
+
+
+ public async Task
+
+ Receive_BinaryDataTransferResponse(BinaryDataTransferRequest Request,
+ Byte[] ResponseBytes,
+ IWebSocketConnection WebSocketConnection,
+ NetworkingNode_Id DestinationId,
+ NetworkPath NetworkPath,
+ EventTracking_Id EventTrackingId,
+ Request_Id RequestId,
+ DateTime? ResponseTimestamp = null,
+ CancellationToken CancellationToken = default)
+
{
- var logger = OnBinaryDataTransferResponseSent;
- if (logger is not null)
+ var response = BinaryDataTransferResponse.Failed(Request);
+
+ try
{
- try
- {
-
- await Task.WhenAll(
- logger.GetInvocationList().
- OfType().
- Select(filterDelegate => filterDelegate.Invoke(
- Timestamp,
- Sender,
- Connection,
- Request,
- Response,
- Runtime
- ))
- );
- }
- catch (Exception e)
- {
- await HandleErrors(
- nameof(OCPPWebSocketAdapterOUT),
- nameof(OnBinaryDataTransferResponseSent),
- e
+ if (BinaryDataTransferResponse.TryParse(Request,
+ ResponseBytes,
+ DestinationId,
+ NetworkPath,
+ out response,
+ out var errorResponse,
+ ResponseTimestamp,
+ parentNetworkingNode.OCPP.CustomBinaryDataTransferResponseParser)) {
+
+ parentNetworkingNode.OCPP.SignaturePolicy.VerifyResponseMessage(
+ response,
+ response.ToBinary(
+ parentNetworkingNode.OCPP.CustomBinaryDataTransferResponseSerializer,
+ parentNetworkingNode.OCPP.CustomStatusInfoSerializer,
+ parentNetworkingNode.OCPP.CustomBinarySignatureSerializer,
+ IncludeSignatures: true
+ ),
+ out errorResponse
+ );
+
+ #region Send OnBinaryDataTransferResponseReceived event
+
+ await LogEvent(
+ OnBinaryDataTransferResponseReceived,
+ loggingDelegate => loggingDelegate.Invoke(
+ Timestamp.Now,
+ parentNetworkingNode,
+ WebSocketConnection,
+ Request,
+ response,
+ response.Runtime,
+ CancellationToken
+ )
);
+
+ #endregion
+
}
+ else
+ response = new BinaryDataTransferResponse(
+ Request,
+ Result.Format(errorResponse)
+ );
+
+ }
+ catch (Exception e)
+ {
+
+ response = new BinaryDataTransferResponse(
+ Request,
+ Result.FromException(e)
+ );
+
}
+ return response;
+
}
#endregion
- #region Send OnBinaryDataTransferRequestErrorSent event
+ #region Receive BinaryDataTransferRequestError
///
- /// An event sent whenever a RequestError to an incoming BinaryDataTransfer request was sent.
+ /// An event fired whenever a BinaryDataTransfer request error was received.
///
- public event OnBinaryDataTransferRequestErrorSentDelegate? OnBinaryDataTransferRequestErrorSent;
-
- public async Task SendOnBinaryDataTransferRequestErrorSent(DateTime Timestamp,
- IEventSender Sender,
- IWebSocketConnection Connection,
- BinaryDataTransferRequest? Request,
- OCPP_JSONRequestErrorMessage RequestErrorMessage,
- TimeSpan Runtime)
+ public event OnBinaryDataTransferRequestErrorReceivedDelegate? BinaryDataTransferRequestErrorReceived;
+
+
+ public async Task
+
+ Receive_BinaryDataTransferRequestError(BinaryDataTransferRequest Request,
+ OCPP_BinaryRequestErrorMessage RequestErrorMessage,
+ IWebSocketConnection Connection,
+ NetworkingNode_Id DestinationId,
+ NetworkPath NetworkPath,
+ EventTracking_Id EventTrackingId,
+ Request_Id RequestId,
+ DateTime? ResponseTimestamp = null,
+ CancellationToken CancellationToken = default)
{
- var logger = OnBinaryDataTransferRequestErrorSent;
- if (logger is not null)
- {
- try
- {
-
- await Task.WhenAll(
- logger.GetInvocationList().
- OfType().
- Select(filterDelegate => filterDelegate.Invoke(
- Timestamp,
- Sender,
- Connection,
- Request,
- RequestErrorMessage,
- Runtime
- ))
- );
+ //parentNetworkingNode.OCPP.SignaturePolicy.VerifyResponseMessage(
+ // response,
+ // response.ToJSON(
+ // parentNetworkingNode.OCPP.CustomBinaryDataTransferResponseSerializer,
+ // parentNetworkingNode.OCPP.CustomIdTokenInfoSerializer,
+ // parentNetworkingNode.OCPP.CustomIdTokenSerializer,
+ // parentNetworkingNode.OCPP.CustomAdditionalInfoSerializer,
+ // parentNetworkingNode.OCPP.CustomMessageContentSerializer,
+ // parentNetworkingNode.OCPP.CustomTransactionLimitsSerializer,
+ // parentNetworkingNode.OCPP.CustomSignatureSerializer,
+ // parentNetworkingNode.OCPP.CustomCustomDataSerializer
+ // ),
+ // out errorResponse
+ //);
+
+ #region Send BinaryDataTransferRequestErrorReceived event
+
+ await LogEvent(
+ BinaryDataTransferRequestErrorReceived,
+ loggingDelegate => loggingDelegate.Invoke(
+ Timestamp.Now,
+ parentNetworkingNode,
+ Connection,
+ Request,
+ RequestErrorMessage,
+ RequestErrorMessage.ResponseTimestamp - Request.RequestTimestamp,
+ CancellationToken
+ )
+ );
+
+ #endregion
+
+
+ var response = BinaryDataTransferResponse.RequestError(
+ Request,
+ RequestErrorMessage.EventTrackingId,
+ RequestErrorMessage.ErrorCode,
+ RequestErrorMessage.ErrorDescription,
+ RequestErrorMessage.ErrorDetails,
+ RequestErrorMessage.ResponseTimestamp,
+ RequestErrorMessage.DestinationId,
+ RequestErrorMessage.NetworkPath
+ );
+
+ #region Send OnBinaryDataTransferResponseReceived event
+
+ await LogEvent(
+ OnBinaryDataTransferResponseReceived,
+ loggingDelegate => loggingDelegate.Invoke(
+ Timestamp.Now,
+ parentNetworkingNode,
+ Connection,
+ Request,
+ response,
+ response.Runtime,
+ CancellationToken
+ )
+ );
+
+ #endregion
+
+ return response;
- }
- catch (Exception e)
- {
- await HandleErrors(
- nameof(OCPPWebSocketAdapterOUT),
- nameof(OnBinaryDataTransferRequestErrorSent),
- e
- );
- }
+ }
+
+ #endregion
+
+ #region Receive BinaryDataTransferResponseError
+
+ ///
+ /// An event fired whenever a BinaryDataTransfer response error was received.
+ ///
+ public event OnBinaryDataTransferResponseErrorReceivedDelegate? BinaryDataTransferResponseErrorReceived;
+
+
+ public async Task
+
+ Receive_BinaryDataTransferResponseError(BinaryDataTransferRequest? Request,
+ BinaryDataTransferResponse? Response,
+ OCPP_BinaryResponseErrorMessage ResponseErrorMessage,
+ IWebSocketConnection Connection,
+ NetworkingNode_Id DestinationId,
+ NetworkPath NetworkPath,
+ EventTracking_Id EventTrackingId,
+ Request_Id RequestId,
+ DateTime? ResponseTimestamp = null,
+ CancellationToken CancellationToken = default)
+
+ {
+
+ //parentNetworkingNode.OCPP.SignaturePolicy.VerifyResponseMessage(
+ // response,
+ // response.ToJSON(
+ // parentNetworkingNode.OCPP.CustomBinaryDataTransferResponseSerializer,
+ // parentNetworkingNode.OCPP.CustomIdTokenInfoSerializer,
+ // parentNetworkingNode.OCPP.CustomIdTokenSerializer,
+ // parentNetworkingNode.OCPP.CustomAdditionalInfoSerializer,
+ // parentNetworkingNode.OCPP.CustomMessageContentSerializer,
+ // parentNetworkingNode.OCPP.CustomTransactionLimitsSerializer,
+ // parentNetworkingNode.OCPP.CustomSignatureSerializer,
+ // parentNetworkingNode.OCPP.CustomCustomDataSerializer
+ // ),
+ // out errorResponse
+ //);
+
+ #region Send BinaryDataTransferResponseErrorReceived event
+
+ await LogEvent(
+ BinaryDataTransferResponseErrorReceived,
+ loggingDelegate => loggingDelegate.Invoke(
+ Timestamp.Now,
+ parentNetworkingNode,
+ Connection,
+ Request,
+ Response,
+ ResponseErrorMessage,
+ Response is not null
+ ? ResponseErrorMessage.ResponseTimestamp - Response.ResponseTimestamp
+ : null,
+ CancellationToken
+ )
+ );
+
+ #endregion
- }
}
diff --git a/WWCP_OCPPv2.1/NetworkingNode/OCPPAdapter/Incoming/Common/DataTransfer.cs b/WWCP_OCPPv2.1/NetworkingNode/OCPPAdapter/Incoming/Common/DataTransfer.cs
index d950b39c8..d0de9ff6e 100644
--- a/WWCP_OCPPv2.1/NetworkingNode/OCPPAdapter/Incoming/Common/DataTransfer.cs
+++ b/WWCP_OCPPv2.1/NetworkingNode/OCPPAdapter/Incoming/Common/DataTransfer.cs
@@ -30,10 +30,110 @@
namespace cloud.charging.open.protocols.OCPPv2_1.NetworkingNode
{
+ #region Logging Delegates
+
+ ///
+ /// A logging delegate called whenever a DataTransfer request was received.
+ ///
+ /// The logging timestamp.
+ /// The sender of the request.
+ /// The connection of the request.
+ /// The DataTransfer request.
+ /// An optional cancellation token.
+ public delegate Task
+
+ OnDataTransferRequestReceivedDelegate(DateTime Timestamp,
+ IEventSender Sender,
+ IWebSocketConnection Connection,
+ DataTransferRequest Request,
+ CancellationToken CancellationToken = default);
+
+
+ ///
+ /// A logging delegate called whenever a DataTransfer response was received.
+ ///
+ /// The logging timestamp.
+ /// The sender of the response.
+ /// The connection of the response.
+ /// The optional request.
+ /// The response.
+ /// The optional runtime of the request/response pair.
+ /// An optional cancellation token.
+ public delegate Task OnDataTransferResponseReceivedDelegate(DateTime Timestamp,
+ IEventSender Sender,
+ IWebSocketConnection Connection,
+ DataTransferRequest? Request,
+ DataTransferResponse Response,
+ TimeSpan? Runtime,
+ CancellationToken CancellationToken = default);
+
+
+ ///
+ /// A logging delegate called whenever a DataTransfer request error was received.
+ ///
+ /// The logging timestamp.
+ /// The sender of the request.
+ /// The connection of the request.
+ /// The optional request.
+ /// The request error.
+ /// The optional runtime of the request/request error pair.
+ /// An optional cancellation token.
+ public delegate Task OnDataTransferRequestErrorReceivedDelegate(DateTime Timestamp,
+ IEventSender Sender,
+ IWebSocketConnection Connection,
+ DataTransferRequest? Request,
+ OCPP_JSONRequestErrorMessage RequestErrorMessage,
+ TimeSpan? Runtime,
+ CancellationToken CancellationToken = default);
+
+
+ ///
+ /// A logging delegate called whenever a DataTransfer response error was received.
+ ///
+ /// The logging timestamp.
+ /// The sender of the response error.
+ /// The connection of the response error.
+ /// The optional request.
+ /// The optional response.
+ /// The ResponseErrorMessage.
+ /// The optional runtime of the request.
+ /// An optional cancellation token.
+ public delegate Task OnDataTransferResponseErrorReceivedDelegate(DateTime Timestamp,
+ IEventSender Sender,
+ IWebSocketConnection Connection,
+ DataTransferRequest? Request,
+ DataTransferResponse? Response,
+ OCPP_JSONResponseErrorMessage ResponseErrorMessage,
+ TimeSpan? Runtime,
+ CancellationToken CancellationToken = default);
+
+ #endregion
+
+
+ ///
+ /// A delegate called whenever a DataTransfer response is expected
+ /// for a received DataTransfer request.
+ ///
+ /// The logging timestamp.
+ /// The sender of the request.
+ /// The connection of the request.
+ /// The DataTransfer request.
+ /// An optional cancellation token.
+ public delegate Task
+
+ OnDataTransferDelegate(DateTime Timestamp,
+ IEventSender Sender,
+ IWebSocketConnection Connection,
+ DataTransferRequest Request,
+ CancellationToken CancellationToken = default);
+
+
public partial class OCPPWebSocketAdapterIN : IOCPPWebSocketAdapterIN
{
- #region Events
+ // Wired via reflection!
+
+ #region Receive DataTransferRequest
///
/// An event sent whenever a DataTransfer request was received.
@@ -45,9 +145,6 @@ public partial class OCPPWebSocketAdapterIN : IOCPPWebSocketAdapterIN
///
public event OnDataTransferDelegate? OnDataTransfer;
- #endregion
-
- #region Receive DataTransferRequest (wired via reflection!)
public async Task
@@ -57,7 +154,7 @@ public async Task
NetworkPath NetworkPath,
EventTracking_Id EventTrackingId,
Request_Id RequestId,
- JObject JSONRequest,
+ JObject Request,
CancellationToken CancellationToken)
{
@@ -67,7 +164,7 @@ public async Task
try
{
- if (DataTransferRequest.TryParse(JSONRequest,
+ if (DataTransferRequest.TryParse(Request,
RequestId,
DestinationId,
NetworkPath,
@@ -92,35 +189,45 @@ public async Task
out errorResponse))
{
- response = new DataTransferResponse(
- Request: request,
- Result: Result.SignatureError(
- $"Invalid signature(s): {errorResponse}"
- )
+ response = DataTransferResponse.SignatureError(
+ request,
+ errorResponse
);
}
#endregion
- #region Send OnDataTransferRequest event
+ #region Send OnDataTransferRequestReceived event
- try
+ var logger = OnDataTransferRequestReceived;
+ if (logger is not null)
{
+ try
+ {
- OnDataTransferRequestReceived?.Invoke(Timestamp.Now,
- parentNetworkingNode,
- WebSocketConnection,
- request);
+ await Task.WhenAll(
+ logger.GetInvocationList().
+ OfType().
+ Select(filterDelegate => filterDelegate.Invoke(
+ Timestamp.Now,
+ parentNetworkingNode,
+ WebSocketConnection,
+ request,
+ CancellationToken
+ ))
+ );
+
+ }
+ catch (Exception e)
+ {
+ await HandleErrors(
+ nameof(OCPPWebSocketAdapterIN),
+ nameof(OnDataTransferRequestReceived),
+ e
+ );
+ }
- }
- catch (Exception e)
- {
- await HandleErrors(
- nameof(OCPPWebSocketAdapterIN),
- nameof(OnDataTransferRequestReceived),
- e
- );
}
#endregion
@@ -135,11 +242,13 @@ await HandleErrors(
var responseTasks = OnDataTransfer?.
GetInvocationList()?.
- SafeSelect(subscriber => (subscriber as OnDataTransferDelegate)?.Invoke(Timestamp.Now,
- parentNetworkingNode,
- WebSocketConnection,
- request,
- CancellationToken)).
+ SafeSelect(subscriber => (subscriber as OnDataTransferDelegate)?.Invoke(
+ Timestamp.Now,
+ parentNetworkingNode,
+ WebSocketConnection,
+ request,
+ CancellationToken
+ )).
ToArray();
response = responseTasks?.Length > 0
@@ -163,11 +272,6 @@ await HandleErrors(
response ??= DataTransferResponse.Failed(request);
- if (response.NetworkPath.Length == 0)
- {
-
- }
-
#endregion
#region Sign response message
@@ -187,12 +291,14 @@ await HandleErrors(
#region Send OnDataTransferResponse event
- await (parentNetworkingNode.OCPP.OUT as OCPPWebSocketAdapterOUT).SendOnDataTransferResponseSent(Timestamp.Now,
- parentNetworkingNode,
- WebSocketConnection,
- request,
- response,
- response.Runtime);
+ await (parentNetworkingNode.OCPP.OUT as OCPPWebSocketAdapterOUT).SendOnDataTransferResponseSent(
+ Timestamp.Now,
+ parentNetworkingNode,
+ WebSocketConnection,
+ request,
+ response,
+ response.Runtime
+ );
#endregion
@@ -217,7 +323,7 @@ await HandleErrors(
EventTrackingId,
RequestId,
nameof(Receive_DataTransfer)[8..],
- JSONRequest,
+ Request,
errorResponse
);
@@ -228,7 +334,7 @@ await HandleErrors(
EventTrackingId,
RequestId,
nameof(Receive_DataTransfer)[8..],
- JSONRequest,
+ Request,
e
);
}
@@ -239,16 +345,149 @@ await HandleErrors(
#endregion
+ #region Receive DataTransferResponse
+
+ ///
+ /// An event fired whenever a DataTransfer response was received.
+ ///
+ public event OnDataTransferResponseReceivedDelegate? OnDataTransferResponseReceived;
+
+
+ public async Task
+
+ Receive_DataTransferResponse(DataTransferRequest Request,
+ JObject ResponseJSON,
+ IWebSocketConnection WebSocketConnection,
+ NetworkingNode_Id DestinationId,
+ NetworkPath NetworkPath,
+ EventTracking_Id EventTrackingId,
+ Request_Id RequestId,
+ DateTime? ResponseTimestamp = null,
+ CancellationToken CancellationToken = default)
+
+ {
+
+ var response = DataTransferResponse.Failed(Request);
+
+ try
+ {
+
+ if (DataTransferResponse.TryParse(Request,
+ ResponseJSON,
+ DestinationId,
+ NetworkPath,
+ out response,
+ out var errorResponse,
+ ResponseTimestamp,
+ parentNetworkingNode.OCPP.CustomDataTransferResponseParser)) {
+
+ parentNetworkingNode.OCPP.SignaturePolicy.VerifyResponseMessage(
+ response,
+ response.ToJSON(
+ parentNetworkingNode.OCPP.CustomDataTransferResponseSerializer,
+ parentNetworkingNode.OCPP.CustomStatusInfoSerializer,
+ parentNetworkingNode.OCPP.CustomSignatureSerializer,
+ parentNetworkingNode.OCPP.CustomCustomDataSerializer
+ ),
+ out errorResponse
+ );
+
+ #region Send OnDataTransferResponseReceived event
+
+ await LogEvent(
+ OnDataTransferResponseReceived,
+ loggingDelegate => loggingDelegate.Invoke(
+ Timestamp.Now,
+ parentNetworkingNode,
+ WebSocketConnection,
+ Request,
+ response,
+ response.Runtime,
+ CancellationToken
+ )
+ );
+
+ #endregion
+
+ }
+
+ else
+ response = new DataTransferResponse(
+ Request,
+ Result.Format(errorResponse)
+ );
+
+ }
+ catch (Exception e)
+ {
+
+ response = new DataTransferResponse(
+ Request,
+ Result.FromException(e)
+ );
+
+ }
+
+ return response;
+
+ }
+
+ #endregion
+
#region Receive DataTransferRequestError
+ ///
+ /// An event fired whenever a DataTransfer request error was received.
+ ///
+ public event OnDataTransferRequestErrorReceivedDelegate? DataTransferRequestErrorReceived;
+
+
public async Task
Receive_DataTransferRequestError(DataTransferRequest Request,
OCPP_JSONRequestErrorMessage RequestErrorMessage,
- IWebSocketConnection WebSocketConnection)
-
+ IWebSocketConnection Connection,
+ NetworkingNode_Id DestinationId,
+ NetworkPath NetworkPath,
+ EventTracking_Id EventTrackingId,
+ Request_Id RequestId,
+ DateTime? ResponseTimestamp = null,
+ CancellationToken CancellationToken = default)
{
+ //parentNetworkingNode.OCPP.SignaturePolicy.VerifyResponseMessage(
+ // response,
+ // response.ToJSON(
+ // parentNetworkingNode.OCPP.CustomDataTransferResponseSerializer,
+ // parentNetworkingNode.OCPP.CustomIdTokenInfoSerializer,
+ // parentNetworkingNode.OCPP.CustomIdTokenSerializer,
+ // parentNetworkingNode.OCPP.CustomAdditionalInfoSerializer,
+ // parentNetworkingNode.OCPP.CustomMessageContentSerializer,
+ // parentNetworkingNode.OCPP.CustomTransactionLimitsSerializer,
+ // parentNetworkingNode.OCPP.CustomSignatureSerializer,
+ // parentNetworkingNode.OCPP.CustomCustomDataSerializer
+ // ),
+ // out errorResponse
+ //);
+
+ #region Send DataTransferRequestErrorReceived event
+
+ await LogEvent(
+ DataTransferRequestErrorReceived,
+ loggingDelegate => loggingDelegate.Invoke(
+ Timestamp.Now,
+ parentNetworkingNode,
+ Connection,
+ Request,
+ RequestErrorMessage,
+ RequestErrorMessage.ResponseTimestamp - Request.RequestTimestamp,
+ CancellationToken
+ )
+ );
+
+ #endregion
+
+
var response = DataTransferResponse.RequestError(
Request,
RequestErrorMessage.EventTrackingId,
@@ -260,6 +499,52 @@ public async Task
RequestErrorMessage.NetworkPath
);
+ #region Send OnDataTransferResponseReceived event
+
+ await LogEvent(
+ OnDataTransferResponseReceived,
+ loggingDelegate => loggingDelegate.Invoke(
+ Timestamp.Now,
+ parentNetworkingNode,
+ Connection,
+ Request,
+ response,
+ response.Runtime,
+ CancellationToken
+ )
+ );
+
+ #endregion
+
+ return response;
+
+ }
+
+ #endregion
+
+ #region Receive DataTransferResponseError
+
+ ///
+ /// An event fired whenever a DataTransfer response error was received.
+ ///
+ public event OnDataTransferResponseErrorReceivedDelegate? DataTransferResponseErrorReceived;
+
+
+ public async Task
+
+ Receive_DataTransferResponseError(DataTransferRequest? Request,
+ DataTransferResponse? Response,
+ OCPP_JSONResponseErrorMessage ResponseErrorMessage,
+ IWebSocketConnection Connection,
+ NetworkingNode_Id DestinationId,
+ NetworkPath NetworkPath,
+ EventTracking_Id EventTrackingId,
+ Request_Id RequestId,
+ DateTime? ResponseTimestamp = null,
+ CancellationToken CancellationToken = default)
+
+ {
+
//parentNetworkingNode.OCPP.SignaturePolicy.VerifyResponseMessage(
// response,
// response.ToJSON(
@@ -275,36 +560,26 @@ public async Task
// out errorResponse
//);
- #region Send OnDataTransferResponseReceived event
-
- var logger = OnDataTransferResponseReceived;
- if (logger is not null)
- {
- try
- {
-
- await Task.WhenAll(logger.GetInvocationList().
- OfType().
- Select(loggingDelegate => loggingDelegate.Invoke(
- Timestamp.Now,
- parentNetworkingNode,
- // WebSocketConnection,
- Request,
- response,
- response.Runtime
- )).
- ToArray());
-
- }
- catch (Exception e)
- {
- DebugX.Log(e, nameof(OCPPWebSocketAdapterIN) + "." + nameof(OnDataTransferResponseReceived));
- }
- }
+ #region Send DataTransferResponseErrorReceived event
+
+ await LogEvent(
+ DataTransferResponseErrorReceived,
+ loggingDelegate => loggingDelegate.Invoke(
+ Timestamp.Now,
+ parentNetworkingNode,
+ Connection,
+ Request,
+ Response,
+ ResponseErrorMessage,
+ Response is not null
+ ? ResponseErrorMessage.ResponseTimestamp - Response.ResponseTimestamp
+ : null,
+ CancellationToken
+ )
+ );
#endregion
- return response;
}
@@ -312,60 +587,389 @@ await Task.WhenAll(logger.GetInvocationList().
}
- public partial class OCPPWebSocketAdapterOUT : IOCPPWebSocketAdapterOUT
- {
+}
- #region Events
- ///
- /// An event sent whenever a response to a DataTransfer was sent.
- ///
- public event OnDataTransferResponseSentDelegate? OnDataTransferResponseSent;
- #endregion
- #region Send OnDataTransferResponse event
- public async Task SendOnDataTransferResponseSent(DateTime Timestamp,
- IEventSender Sender,
- IWebSocketConnection Connection,
- DataTransferRequest Request,
- DataTransferResponse Response,
- TimeSpan Runtime)
- {
- var logger = OnDataTransferResponseSent;
- if (logger is not null)
- {
- try
- {
-
- await Task.WhenAll(logger.GetInvocationList().
- OfType ().
- Select (filterDelegate => filterDelegate.Invoke(Timestamp,
- Sender,
- Connection,
- Request,
- Response,
- Runtime)).
- ToArray());
- }
- catch (Exception e)
- {
- await HandleErrors(
- nameof(OCPPWebSocketAdapterOUT),
- nameof(OnDataTransferResponseSent),
- e
- );
- }
- }
- }
- #endregion
- }
-}
+
+
+///*
+// * Copyright (c) 2014-2024 GraphDefined GmbH
+// * This file is part of WWCP OCPP
+// *
+// * Licensed under the Apache License, Version 2.0 (the "License");
+// * you may not use this file except in compliance with the License.
+// * You may obtain a copy of the License at
+// *
+// * http://www.apache.org/licenses/LICENSE-2.0
+// *
+// * Unless required by applicable law or agreed to in writing, software
+// * distributed under the License is distributed on an "AS IS" BASIS,
+// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// * See the License for the specific language governing permissions and
+// * limitations under the License.
+// */
+
+//#region Usings
+
+//using Newtonsoft.Json.Linq;
+
+//using org.GraphDefined.Vanaheimr.Illias;
+//using org.GraphDefined.Vanaheimr.Hermod;
+//using org.GraphDefined.Vanaheimr.Hermod.WebSocket;
+
+//using cloud.charging.open.protocols.OCPPv2_1.WebSockets;
+
+//#endregion
+
+//namespace cloud.charging.open.protocols.OCPPv2_1.NetworkingNode
+//{
+
+// public partial class OCPPWebSocketAdapterIN : IOCPPWebSocketAdapterIN
+// {
+
+// #region Events
+
+// ///
+// /// An event sent whenever a DataTransfer request was received.
+// ///
+// public event OnDataTransferRequestReceivedDelegate? OnDataTransferRequestReceived;
+
+// ///
+// /// An event sent whenever a DataTransfer request was received for processing.
+// ///
+// public event OnDataTransferDelegate? OnDataTransfer;
+
+// #endregion
+
+// #region Receive DataTransferRequest (wired via reflection!)
+
+// public async Task
+
+// Receive_DataTransfer(DateTime RequestTimestamp,
+// IWebSocketConnection WebSocketConnection,
+// NetworkingNode_Id DestinationId,
+// NetworkPath NetworkPath,
+// EventTracking_Id EventTrackingId,
+// Request_Id RequestId,
+// JObject JSONRequest,
+// CancellationToken CancellationToken)
+
+// {
+
+// OCPP_Response? ocppResponse = null;
+
+// try
+// {
+
+// if (DataTransferRequest.TryParse(JSONRequest,
+// RequestId,
+// DestinationId,
+// NetworkPath,
+// out var request,
+// out var errorResponse,
+// RequestTimestamp,
+// parentNetworkingNode.OCPP.DefaultRequestTimeout,
+// EventTrackingId,
+// parentNetworkingNode.OCPP.CustomDataTransferRequestParser)) {
+
+// DataTransferResponse? response = null;
+
+// #region Verify request signature(s)
+
+// if (!parentNetworkingNode.OCPP.SignaturePolicy.VerifyRequestMessage(
+// request,
+// request.ToJSON(
+// parentNetworkingNode.OCPP.CustomDataTransferRequestSerializer,
+// parentNetworkingNode.OCPP.CustomSignatureSerializer,
+// parentNetworkingNode.OCPP.CustomCustomDataSerializer
+// ),
+// out errorResponse))
+// {
+
+// response = new DataTransferResponse(
+// Request: request,
+// Result: Result.SignatureError(
+// $"Invalid signature(s): {errorResponse}"
+// )
+// );
+
+// }
+
+// #endregion
+
+// #region Send OnDataTransferRequest event
+
+// try
+// {
+
+// OnDataTransferRequestReceived?.Invoke(Timestamp.Now,
+// parentNetworkingNode,
+// WebSocketConnection,
+// request);
+
+// }
+// catch (Exception e)
+// {
+// await HandleErrors(
+// nameof(OCPPWebSocketAdapterIN),
+// nameof(OnDataTransferRequestReceived),
+// e
+// );
+// }
+
+// #endregion
+
+
+// #region Call async subscribers
+
+// if (response is null)
+// {
+// try
+// {
+
+// var responseTasks = OnDataTransfer?.
+// GetInvocationList()?.
+// SafeSelect(subscriber => (subscriber as OnDataTransferDelegate)?.Invoke(Timestamp.Now,
+// parentNetworkingNode,
+// WebSocketConnection,
+// request,
+// CancellationToken)).
+// ToArray();
+
+// response = responseTasks?.Length > 0
+// ? (await Task.WhenAll(responseTasks!)).FirstOrDefault()
+// : DataTransferResponse.Failed(request, $"Undefined {nameof(OnDataTransfer)}!");
+
+// }
+// catch (Exception e)
+// {
+
+// response = DataTransferResponse.ExceptionOccured(request, e);
+
+// await HandleErrors(
+// nameof(OCPPWebSocketAdapterIN),
+// nameof(OnDataTransfer),
+// e
+// );
+
+// }
+// }
+
+// response ??= DataTransferResponse.Failed(request);
+
+// if (response.NetworkPath.Length == 0)
+// {
+
+// }
+
+// #endregion
+
+// #region Sign response message
+
+// parentNetworkingNode.OCPP.SignaturePolicy.SignResponseMessage(
+// response,
+// response.ToJSON(
+// parentNetworkingNode.OCPP.CustomDataTransferResponseSerializer,
+// parentNetworkingNode.OCPP.CustomStatusInfoSerializer,
+// parentNetworkingNode.OCPP.CustomSignatureSerializer,
+// parentNetworkingNode.OCPP.CustomCustomDataSerializer
+// ),
+// out var errorResponse2);
+
+// #endregion
+
+
+// #region Send OnDataTransferResponse event
+
+// await (parentNetworkingNode.OCPP.OUT as OCPPWebSocketAdapterOUT).SendOnDataTransferResponseSent(Timestamp.Now,
+// parentNetworkingNode,
+// WebSocketConnection,
+// request,
+// response,
+// response.Runtime);
+
+// #endregion
+
+// ocppResponse = OCPP_Response.JSONResponse(
+// EventTrackingId,
+// NetworkPath.Source,
+// NetworkPath.From(parentNetworkingNode.Id),
+// RequestId,
+// response.ToJSON(
+// parentNetworkingNode.OCPP.CustomDataTransferResponseSerializer,
+// parentNetworkingNode.OCPP.CustomStatusInfoSerializer,
+// parentNetworkingNode.OCPP.CustomSignatureSerializer,
+// parentNetworkingNode.OCPP.CustomCustomDataSerializer
+// ),
+// CancellationToken
+// );
+
+// }
+
+// else
+// ocppResponse = OCPP_Response.CouldNotParse(
+// EventTrackingId,
+// RequestId,
+// nameof(Receive_DataTransfer)[8..],
+// JSONRequest,
+// errorResponse
+// );
+
+// }
+// catch (Exception e)
+// {
+// ocppResponse = OCPP_Response.FormationViolation(
+// EventTrackingId,
+// RequestId,
+// nameof(Receive_DataTransfer)[8..],
+// JSONRequest,
+// e
+// );
+// }
+
+// return ocppResponse;
+
+// }
+
+// #endregion
+
+// #region Receive DataTransferRequestError
+
+// public async Task
+
+// Receive_DataTransferRequestError(DataTransferRequest Request,
+// OCPP_JSONRequestErrorMessage RequestErrorMessage,
+// IWebSocketConnection WebSocketConnection)
+
+// {
+
+// var response = DataTransferResponse.RequestError(
+// Request,
+// RequestErrorMessage.EventTrackingId,
+// RequestErrorMessage.ErrorCode,
+// RequestErrorMessage.ErrorDescription,
+// RequestErrorMessage.ErrorDetails,
+// RequestErrorMessage.ResponseTimestamp,
+// RequestErrorMessage.DestinationId,
+// RequestErrorMessage.NetworkPath
+// );
+
+// //parentNetworkingNode.OCPP.SignaturePolicy.VerifyResponseMessage(
+// // response,
+// // response.ToJSON(
+// // parentNetworkingNode.OCPP.CustomDataTransferResponseSerializer,
+// // parentNetworkingNode.OCPP.CustomIdTokenInfoSerializer,
+// // parentNetworkingNode.OCPP.CustomIdTokenSerializer,
+// // parentNetworkingNode.OCPP.CustomAdditionalInfoSerializer,
+// // parentNetworkingNode.OCPP.CustomMessageContentSerializer,
+// // parentNetworkingNode.OCPP.CustomTransactionLimitsSerializer,
+// // parentNetworkingNode.OCPP.CustomSignatureSerializer,
+// // parentNetworkingNode.OCPP.CustomCustomDataSerializer
+// // ),
+// // out errorResponse
+// //);
+
+// #region Send OnDataTransferResponseReceived event
+
+// var logger = OnDataTransferResponseReceived;
+// if (logger is not null)
+// {
+// try
+// {
+
+// await Task.WhenAll(logger.GetInvocationList().
+// OfType().
+// Select(loggingDelegate => loggingDelegate.Invoke(
+// Timestamp.Now,
+// parentNetworkingNode,
+// // WebSocketConnection,
+// Request,
+// response,
+// response.Runtime
+// )).
+// ToArray());
+
+// }
+// catch (Exception e)
+// {
+// DebugX.Log(e, nameof(OCPPWebSocketAdapterIN) + "." + nameof(OnDataTransferResponseReceived));
+// }
+// }
+
+// #endregion
+
+// return response;
+
+// }
+
+// #endregion
+
+// }
+
+// public partial class OCPPWebSocketAdapterOUT : IOCPPWebSocketAdapterOUT
+// {
+
+// #region Events
+
+// ///
+// /// An event sent whenever a response to a DataTransfer was sent.
+// ///
+// public event OnDataTransferResponseSentDelegate? OnDataTransferResponseSent;
+
+// #endregion
+
+// #region Send OnDataTransferResponse event
+
+// public async Task SendOnDataTransferResponseSent(DateTime Timestamp,
+// IEventSender Sender,
+// IWebSocketConnection Connection,
+// DataTransferRequest Request,
+// DataTransferResponse Response,
+// TimeSpan Runtime)
+// {
+
+// var logger = OnDataTransferResponseSent;
+// if (logger is not null)
+// {
+// try
+// {
+
+// await Task.WhenAll(logger.GetInvocationList().
+// OfType ().
+// Select (filterDelegate => filterDelegate.Invoke(Timestamp,
+// Sender,
+// Connection,
+// Request,
+// Response,
+// Runtime)).
+// ToArray());
+
+// }
+// catch (Exception e)
+// {
+// await HandleErrors(
+// nameof(OCPPWebSocketAdapterOUT),
+// nameof(OnDataTransferResponseSent),
+// e
+// );
+// }
+
+// }
+
+// }
+
+// #endregion
+
+// }
+
+//}
diff --git a/WWCP_OCPPv2.1/NetworkingNode/OCPPAdapter/Outgoing/Common/BinaryDataStreamsExtensions/BinaryDataTransfer.cs b/WWCP_OCPPv2.1/NetworkingNode/OCPPAdapter/Outgoing/Common/BinaryDataStreamsExtensions/BinaryDataTransfer.cs
index e6c047ea1..df2e8f569 100644
--- a/WWCP_OCPPv2.1/NetworkingNode/OCPPAdapter/Outgoing/Common/BinaryDataStreamsExtensions/BinaryDataTransfer.cs
+++ b/WWCP_OCPPv2.1/NetworkingNode/OCPPAdapter/Outgoing/Common/BinaryDataStreamsExtensions/BinaryDataTransfer.cs
@@ -28,12 +28,12 @@
namespace cloud.charging.open.protocols.OCPPv2_1.NetworkingNode
{
- #region Delegates
+ #region Logging Delegates
///
- /// A delegate called whenever a BinaryDataTransfer request was sent.
+ /// A logging delegate called whenever a BinaryDataTransfer request was sent.
///
- /// The timestamp of the request.
+ /// The logging timestamp.
/// The sender of the request.
/// The connection of the request.
/// The request.
@@ -46,37 +46,62 @@ public delegate Task OnBinaryDataTransferRequestSentDelegate(DateTime
///
- /// A delegate called whenever a response to a BinaryDataTransfer request was received.
+ /// A logging delegate called whenever a BinaryDataTransfer response was sent.
///
- /// The timestamp of the log request.
- /// The sender of the request.
- /// The connection of the request.
- /// The request.
+ /// The logging timestamp.
+ /// The sender of the response.
+ /// The connection of the response.
+ /// The optional request.
/// The response.
- /// The runtime of the request.
- public delegate Task OnBinaryDataTransferResponseReceivedDelegate(DateTime Timestamp,
- IEventSender Sender,
- IWebSocketConnection Connection,
- BinaryDataTransferRequest Request,
- BinaryDataTransferResponse Response,
- TimeSpan Runtime);
+ /// The optional runtime of the response.
+ public delegate Task
+
+ OnBinaryDataTransferResponseSentDelegate(DateTime Timestamp,
+ IEventSender Sender,
+ IWebSocketConnection Connection,
+ BinaryDataTransferRequest? Request,
+ BinaryDataTransferResponse Response,
+ TimeSpan? Runtime);
///
- /// A delegate called whenever a RequestError to a BinaryDataTransfer request was received.
+ /// A logging delegate called whenever a BinaryDataTransfer request error was sent.
///
- /// The timestamp of the log request.
- /// The sender of the request.
- /// The connection of the request.
- /// The request.
- /// The RequestErrorMessage.
- /// The runtime of the request.
- public delegate Task OnBinaryDataTransferRequestErrorReceivedDelegate(DateTime Timestamp,
- IEventSender Sender,
- IWebSocketConnection Connection,
- BinaryDataTransferRequest Request,
- OCPP_BinaryRequestErrorMessage RequestErrorMessage,
- TimeSpan Runtime);
+ /// The logging timestamp.
+ /// The sender of the request error.
+ /// The connection of the request error.
+ /// The optional request (when parsable).
+ /// The request error message.
+ /// The optional runtime of the request error messag.
+ public delegate Task
+
+ OnBinaryDataTransferRequestErrorSentDelegate(DateTime Timestamp,
+ IEventSender Sender,
+ IWebSocketConnection Connection,
+ BinaryDataTransferRequest? Request,
+ OCPP_JSONRequestErrorMessage RequestErrorMessage,
+ TimeSpan? Runtime);
+
+
+ ///
+ /// A logging delegate called whenever a BinaryDataTransfer response error was sent.
+ ///
+ /// The logging timestamp.
+ /// The sender of the response error.
+ /// The connection of the response error.
+ /// The optional request.
+ /// The optional response.
+ /// The response error message.
+ /// The optional runtime of the response error message.
+ public delegate Task
+
+ OnBinaryDataTransferResponseErrorSentDelegate(DateTime Timestamp,
+ IEventSender Sender,
+ IWebSocketConnection Connection,
+ BinaryDataTransferRequest? Request,
+ BinaryDataTransferResponse? Response,
+ OCPP_JSONResponseErrorMessage ResponseErrorMessage,
+ TimeSpan? Runtime);
#endregion
@@ -84,21 +109,13 @@ public delegate Task OnBinaryDataTransferRequestErrorReceivedDelegate(DateTime
public partial class OCPPWebSocketAdapterOUT : IOCPPWebSocketAdapterOUT
{
- #region Events
+ #region Send BinaryDataTransfer (request)
///
- /// An event fired whenever a BinaryDataTransfer request will be sent to the CSMS.
+ /// An event fired whenever a BinaryDataTransfer request will be sent.
///
- public event OnBinaryDataTransferRequestSentDelegate? OnBinaryDataTransferRequestSent;
+ public event OnBinaryDataTransferRequestSentDelegate? OnBinaryDataTransferRequestSent;
- ///
- /// An event fired whenever a response to a BinaryDataTransfer request was received.
- ///
- public event OnBinaryDataTransferResponseReceivedDelegate? OnBinaryDataTransferResponse;
-
- #endregion
-
- #region BinaryDataTransfer(Request)
///
/// Send vendor-specific binary data.
@@ -212,182 +229,90 @@ out var signingErrors
#endregion
- }
-
- public partial class OCPPWebSocketAdapterIN : IOCPPWebSocketAdapterIN
- {
-
- #region Receive BinaryDataTransferResponse (wired via reflection!)
+ #region Send OnBinaryDataTransferResponseSent event
///
- /// An event fired whenever a BinaryDataTransfer response was received.
+ /// An event sent whenever a BinaryDataTransfer response was sent.
///
- public event OnBinaryDataTransferResponseReceivedDelegate? OnBinaryDataTransferResponseReceived;
-
-
- public async Task
-
- Receive_BinaryDataTransferResponse(BinaryDataTransferRequest Request,
- Byte[] ResponseBytes,
- IWebSocketConnection WebSocketConnection,
- NetworkingNode_Id DestinationId,
- NetworkPath NetworkPath,
- EventTracking_Id EventTrackingId,
- Request_Id RequestId,
- DateTime? ResponseTimestamp = null,
- CancellationToken CancellationToken = default)
-
- {
-
- var response = BinaryDataTransferResponse.Failed(Request);
-
- try
- {
-
- if (BinaryDataTransferResponse.TryParse(Request,
- ResponseBytes,
- DestinationId,
- NetworkPath,
- out response,
- out var errorResponse,
- ResponseTimestamp,
- parentNetworkingNode.OCPP.CustomBinaryDataTransferResponseParser)) {
-
- parentNetworkingNode.OCPP.SignaturePolicy.VerifyResponseMessage(
- response,
- response.ToBinary(
- parentNetworkingNode.OCPP.CustomBinaryDataTransferResponseSerializer,
- parentNetworkingNode.OCPP.CustomStatusInfoSerializer,
- parentNetworkingNode.OCPP.CustomBinarySignatureSerializer,
- IncludeSignatures: true
- ),
- out errorResponse
- );
-
- #region Send OnBinaryDataTransferResponseReceived event
-
- await LogEvent(
- OnBinaryDataTransferResponseReceived,
- loggingDelegate => loggingDelegate.Invoke(
- Timestamp.Now,
- parentNetworkingNode,
- WebSocketConnection,
- Request,
- response,
- response.Runtime
- )
- );
-
- #endregion
-
- }
-
- else
- response = new BinaryDataTransferResponse(
- Request,
- Result.Format(errorResponse)
- );
-
- }
- catch (Exception e)
- {
-
- response = new BinaryDataTransferResponse(
- Request,
- Result.FromException(e)
- );
-
- }
-
- return response;
-
- }
+ public event OnBinaryDataTransferResponseSentDelegate? OnBinaryDataTransferResponseSent;
+
+
+ public Task SendOnBinaryDataTransferResponseSent(DateTime Timestamp,
+ IEventSender Sender,
+ IWebSocketConnection Connection,
+ BinaryDataTransferRequest Request,
+ BinaryDataTransferResponse Response,
+ TimeSpan Runtime)
+
+ => LogEvent(
+ OnBinaryDataTransferResponseSent,
+ loggingDelegate => loggingDelegate.Invoke(
+ Timestamp,
+ Sender,
+ Connection,
+ Request,
+ Response,
+ Runtime
+ )
+ );
#endregion
- #region Receive BinaryDataTransferRequestError
+ #region Send OnBinaryDataTransferRequestErrorSent event
///
- /// An event fired whenever a BinaryDataTransfer RequestError was received.
+ /// An event sent whenever a BinaryDataTransfer request error was sent.
///
- public event OnBinaryDataTransferRequestErrorReceivedDelegate? BinaryDataTransferRequestErrorReceived;
-
-
- public async Task
+ public event OnBinaryDataTransferRequestErrorSentDelegate? OnBinaryDataTransferRequestErrorSent;
+
+
+ public Task SendOnBinaryDataTransferRequestErrorSent(DateTime Timestamp,
+ IEventSender Sender,
+ IWebSocketConnection Connection,
+ BinaryDataTransferRequest? Request,
+ OCPP_JSONRequestErrorMessage RequestErrorMessage,
+ TimeSpan Runtime)
+ => LogEvent(
+ OnBinaryDataTransferRequestErrorSent,
+ loggingDelegate => loggingDelegate.Invoke(
+ Timestamp,
+ Sender,
+ Connection,
+ Request,
+ RequestErrorMessage,
+ Runtime
+ )
+ );
- Receive_BinaryDataTransferRequestError(BinaryDataTransferRequest Request,
- OCPP_BinaryRequestErrorMessage RequestErrorMessage,
- IWebSocketConnection WebSocketConnection,
- NetworkingNode_Id DestinationId,
- NetworkPath NetworkPath,
- EventTracking_Id EventTrackingId,
- Request_Id RequestId,
- DateTime? ResponseTimestamp = null,
- CancellationToken CancellationToken = default)
- {
-
- //parentNetworkingNode.OCPP.SignaturePolicy.VerifyResponseMessage(
- // response,
- // response.ToJSON(
- // parentNetworkingNode.OCPP.CustomBinaryDataTransferResponseSerializer,
- // parentNetworkingNode.OCPP.CustomIdTokenInfoSerializer,
- // parentNetworkingNode.OCPP.CustomIdTokenSerializer,
- // parentNetworkingNode.OCPP.CustomAdditionalInfoSerializer,
- // parentNetworkingNode.OCPP.CustomMessageContentSerializer,
- // parentNetworkingNode.OCPP.CustomTransactionLimitsSerializer,
- // parentNetworkingNode.OCPP.CustomSignatureSerializer,
- // parentNetworkingNode.OCPP.CustomCustomDataSerializer
- // ),
- // out errorResponse
- //);
-
- #region Send BinaryDataTransferRequestErrorReceived event
-
- await LogEvent(
- BinaryDataTransferRequestErrorReceived,
- loggingDelegate => loggingDelegate.Invoke(
- Timestamp.Now,
- parentNetworkingNode,
- WebSocketConnection,
- Request,
- RequestErrorMessage,
- RequestErrorMessage.ResponseTimestamp - Request.RequestTimestamp
- )
- );
-
- #endregion
-
-
- var response = BinaryDataTransferResponse.RequestError(
- Request,
- RequestErrorMessage.EventTrackingId,
- RequestErrorMessage.ErrorCode,
- RequestErrorMessage.ErrorDescription,
- RequestErrorMessage.ErrorDetails,
- RequestErrorMessage.ResponseTimestamp,
- RequestErrorMessage.DestinationId,
- RequestErrorMessage.NetworkPath
- );
-
- #region Send OnBinaryDataTransferResponseReceived event
-
- await LogEvent(
- OnBinaryDataTransferResponseReceived,
- loggingDelegate => loggingDelegate.Invoke(
- Timestamp.Now,
- parentNetworkingNode,
- WebSocketConnection,
- Request,
- response,
- response.Runtime
- )
- );
-
- #endregion
+ #endregion
- return response;
+ #region Send OnBinaryDataTransferResponseErrorSent event
- }
+ ///
+ /// An event sent whenever a BinaryDataTransfer response error was sent.
+ ///
+ public event OnBinaryDataTransferResponseErrorSentDelegate? OnBinaryDataTransferResponseErrorSent;
+
+
+ public Task SendOnBinaryDataTransferResponseErrorSent(DateTime Timestamp,
+ IEventSender Sender,
+ IWebSocketConnection Connection,
+ BinaryDataTransferRequest? Request,
+ BinaryDataTransferResponse? Response,
+ OCPP_JSONResponseErrorMessage ResponseErrorMessage,
+ TimeSpan Runtime)
+ => LogEvent(
+ OnBinaryDataTransferResponseErrorSent,
+ loggingDelegate => loggingDelegate.Invoke(
+ Timestamp,
+ Sender,
+ Connection,
+ Request,
+ Response,
+ ResponseErrorMessage,
+ Runtime
+ )
+ );
#endregion
diff --git a/WWCP_OCPPv2.1/NetworkingNode/OCPPAdapter/Outgoing/Common/DataTransfer.cs b/WWCP_OCPPv2.1/NetworkingNode/OCPPAdapter/Outgoing/Common/DataTransfer.cs
index fe9cfe948..a6be93683 100644
--- a/WWCP_OCPPv2.1/NetworkingNode/OCPPAdapter/Outgoing/Common/DataTransfer.cs
+++ b/WWCP_OCPPv2.1/NetworkingNode/OCPPAdapter/Outgoing/Common/DataTransfer.cs
@@ -17,12 +17,10 @@
#region Usings
-using Newtonsoft.Json.Linq;
-
using org.GraphDefined.Vanaheimr.Illias;
+using org.GraphDefined.Vanaheimr.Hermod;
using org.GraphDefined.Vanaheimr.Hermod.WebSocket;
-using cloud.charging.open.protocols.OCPP;
using cloud.charging.open.protocols.OCPPv2_1.WebSockets;
#endregion
@@ -30,25 +28,97 @@
namespace cloud.charging.open.protocols.OCPPv2_1.NetworkingNode
{
+ #region Logging Delegates
+
///
- /// The OCPP adapter for sending messages.
+ /// A logging delegate called whenever a DataTransfer request was sent.
///
+ /// The logging timestamp.
+ /// The sender of the request.
+ /// The connection of the request.
+ /// The request.
+ /// The result of the send message process.
+ public delegate Task OnDataTransferRequestSentDelegate(DateTime Timestamp,
+ IEventSender Sender,
+ IWebSocketConnection Connection,
+ DataTransferRequest Request,
+ SentMessageResults SendMessageResult);
+
+
+ ///
+ /// A logging delegate called whenever a DataTransfer response was sent.
+ ///
+ /// The logging timestamp.
+ /// The sender of the response.
+ /// The connection of the response.
+ /// The optional request.
+ /// The response.
+ /// The optional runtime of the response.
+ public delegate Task
+
+ OnDataTransferResponseSentDelegate(DateTime Timestamp,
+ IEventSender Sender,
+ IWebSocketConnection Connection,
+ DataTransferRequest? Request,
+ DataTransferResponse Response,
+ TimeSpan? Runtime);
+
+
+ ///
+ /// A logging delegate called whenever a DataTransfer request error was sent.
+ ///
+ /// The logging timestamp.
+ /// The sender of the request error.
+ /// The connection of the request error.
+ /// The optional request (when parsable).
+ /// The request error message.
+ /// The optional runtime of the request error messag.
+ public delegate Task
+
+ OnDataTransferRequestErrorSentDelegate(DateTime Timestamp,
+ IEventSender Sender,
+ IWebSocketConnection Connection,
+ DataTransferRequest? Request,
+ OCPP_JSONRequestErrorMessage RequestErrorMessage,
+ TimeSpan? Runtime);
+
+
+ ///
+ /// A logging delegate called whenever a DataTransfer response error was sent.
+ ///
+ /// The logging timestamp.
+ /// The sender of the response error.
+ /// The connection of the response error.
+ /// The optional request.
+ /// The optional response.
+ /// The response error message.
+ /// The optional runtime of the response error message.
+ public delegate Task
+
+ OnDataTransferResponseErrorSentDelegate(DateTime Timestamp,
+ IEventSender Sender,
+ IWebSocketConnection Connection,
+ DataTransferRequest? Request,
+ DataTransferResponse? Response,
+ OCPP_JSONResponseErrorMessage ResponseErrorMessage,
+ TimeSpan? Runtime);
+
+ #endregion
+
+
public partial class OCPPWebSocketAdapterOUT : IOCPPWebSocketAdapterOUT
{
- #region Events
+ #region Send DataTransfer (request)
///
- /// An event fired whenever a data transfer request will be sent to the CSMS.
+ /// An event fired whenever a DataTransfer request will be sent.
///
- public event OnDataTransferRequestSentDelegate? OnDataTransferRequestSent;
-
- #endregion
+ public event OnDataTransferRequestSentDelegate? OnDataTransferRequestSent;
- #region DataTransfer(Request)
///
- /// Send vendor-specific data.
+ /// Send vendor-specific binary data.
///
/// A DataTransfer request.
public async Task DataTransfer(DataTransferRequest Request)
@@ -59,6 +129,8 @@ public async Task DataTransfer(DataTransferRequest Request
try
{
+ #region Sign request message
+
if (!parentNetworkingNode.OCPP.SignaturePolicy.SignRequestMessage(
Request,
Request.ToJSON(
@@ -69,76 +141,70 @@ public async Task DataTransfer(DataTransferRequest Request
out var signingErrors
))
{
- response = new DataTransferResponse(
+ response = DataTransferResponse.SignatureError(
Request,
- Result.SignatureError(signingErrors)
+ signingErrors
);
}
+ #endregion
+
else
{
+ #region Send request message
+
var sendRequestState = await SendJSONRequestAndWait(
- OCPP_JSONRequestMessage.FromRequest(
- Request,
- Request.ToJSON(
- parentNetworkingNode.OCPP.CustomDataTransferRequestSerializer,
- parentNetworkingNode.OCPP.CustomSignatureSerializer,
- parentNetworkingNode.OCPP.CustomCustomDataSerializer
- )
- ),
-
- async sendMessageResult => {
-
- #region Send OnDataTransferRequestSent event
-
- var logger = OnDataTransferRequestSent;
- if (logger is not null)
- {
- try
- {
-
- await Task.WhenAll(logger.GetInvocationList().
- OfType().
- Select(loggingDelegate => loggingDelegate.Invoke(
- Timestamp.Now,
- parentNetworkingNode,
- sendMessageResult.Connection,
- Request,
- sendMessageResult.Result
- )).
- ToArray());
-
- }
- catch (Exception e)
- {
- DebugX.Log(e, nameof(OCPPWebSocketAdapterOUT) + "." + nameof(OnDataTransferRequestSent));
- }
- }
-
- #endregion
-
- }
-
- );
+ OCPP_JSONRequestMessage.FromRequest(
+ Request,
+ Request.ToJSON(
+ parentNetworkingNode.OCPP.CustomDataTransferRequestSerializer,
+ parentNetworkingNode.OCPP.CustomSignatureSerializer,
+ parentNetworkingNode.OCPP.CustomCustomDataSerializer
+ )
+ ),
+
+ sendMessageResult => LogEvent(
+ OnDataTransferRequestSent,
+ loggingDelegate => loggingDelegate.Invoke(
+ Timestamp.Now,
+ parentNetworkingNode,
+ sendMessageResult.Connection,
+ Request,
+ sendMessageResult.Result
+ )
+ )
+
+ );
- if (sendRequestState.IsValidJSONResponse(Request, out var jsonResponse))
- {
+ #endregion
+ if (sendRequestState.IsValidJSONResponse(Request, out var jsonResponse))
response = await (parentNetworkingNode.OCPP.IN as OCPPWebSocketAdapterIN).Receive_DataTransferResponse(
- Request,
- jsonResponse,
- null,
- sendRequestState.DestinationIdReceived,
- sendRequestState.NetworkPathReceived,
- Request. EventTrackingId,
- Request. RequestId,
- sendRequestState.ResponseTimestamp,
- Request. CancellationToken
- );
-
- }
+ Request,
+ jsonResponse,
+ null,
+ sendRequestState.DestinationIdReceived,
+ sendRequestState.NetworkPathReceived,
+ Request.EventTrackingId,
+ Request.RequestId,
+ sendRequestState.ResponseTimestamp,
+ Request.CancellationToken
+ );
+
+ if (sendRequestState.IsValidJSONRequestError(Request, out var jsonRequestError))
+ response = await (parentNetworkingNode.OCPP.IN as OCPPWebSocketAdapterIN).Receive_DataTransferRequestError(
+ Request,
+ jsonRequestError,
+ null,
+ sendRequestState.DestinationIdReceived,
+ sendRequestState.NetworkPathReceived,
+ Request.EventTrackingId,
+ Request.RequestId,
+ sendRequestState.ResponseTimestamp,
+ Request.CancellationToken
+ );
response ??= new DataTransferResponse(
Request,
@@ -164,119 +230,90 @@ Request. CancellationToken
#endregion
- }
-
-
- ///
- /// The OCPP adapter for receiving messages.
- ///
- public partial class OCPPWebSocketAdapterIN : IOCPPWebSocketAdapterIN
- {
-
- #region Events
+ #region Send OnDataTransferResponseSent event
///
- /// An event fired whenever a DataTransfer response was received.
+ /// An event sent whenever a DataTransfer response was sent.
///
- public event OnDataTransferResponseReceivedDelegate? OnDataTransferResponseReceived;
+ public event OnDataTransferResponseSentDelegate? OnDataTransferResponseSent;
+
+
+ public Task SendOnDataTransferResponseSent(DateTime Timestamp,
+ IEventSender Sender,
+ IWebSocketConnection Connection,
+ DataTransferRequest Request,
+ DataTransferResponse Response,
+ TimeSpan Runtime)
+
+ => LogEvent(
+ OnDataTransferResponseSent,
+ loggingDelegate => loggingDelegate.Invoke(
+ Timestamp,
+ Sender,
+ Connection,
+ Request,
+ Response,
+ Runtime
+ )
+ );
#endregion
- #region Receive DataTransfer response (wired via reflection!)
-
- public async Task
+ #region Send OnDataTransferRequestErrorSent event
- Receive_DataTransferResponse(DataTransferRequest Request,
- JObject ResponseJSON,
- IWebSocketConnection WebSocketConnection,
- NetworkingNode_Id DestinationId,
- NetworkPath NetworkPath,
- EventTracking_Id EventTrackingId,
- Request_Id RequestId,
- DateTime? ResponseTimestamp = null,
- CancellationToken CancellationToken = default)
-
- {
-
- var response = DataTransferResponse.Failed(Request);
-
- try
- {
-
- if (DataTransferResponse.TryParse(Request,
- ResponseJSON,
- DestinationId,
- NetworkPath,
- out response,
- out var errorResponse,
- ResponseTimestamp,
- parentNetworkingNode.OCPP.CustomDataTransferResponseParser,
- parentNetworkingNode.OCPP.CustomStatusInfoParser,
- parentNetworkingNode.OCPP.CustomSignatureParser,
- parentNetworkingNode.OCPP.CustomCustomDataParser)) {
-
- parentNetworkingNode.OCPP.SignaturePolicy.VerifyResponseMessage(
- response,
- response.ToJSON(
- parentNetworkingNode.OCPP.CustomDataTransferResponseSerializer,
- parentNetworkingNode.OCPP.CustomStatusInfoSerializer,
- parentNetworkingNode.OCPP.CustomSignatureSerializer,
- parentNetworkingNode.OCPP.CustomCustomDataSerializer
- ),
- out errorResponse
- );
-
- #region Send OnDataTransferResponseReceived event
-
- var logger = OnDataTransferResponseReceived;
- if (logger is not null)
- {
- try
- {
-
- await Task.WhenAll(logger.GetInvocationList().
- OfType ().
- Select (loggingDelegate => loggingDelegate.Invoke(
- Timestamp.Now,
- parentNetworkingNode,
- // WebSocketConnection,
- Request,
- response,
- response.Runtime
- )).
- ToArray());
-
- }
- catch (Exception e)
- {
- DebugX.Log(e, nameof(OCPPWebSocketAdapterIN) + "." + nameof(OnDataTransferResponseReceived));
- }
- }
-
- #endregion
-
- }
-
- else
- response = new DataTransferResponse(
- Request,
- Result.Format(errorResponse)
- );
-
- }
- catch (Exception e)
- {
-
- response = new DataTransferResponse(
- Request,
- Result.FromException(e)
- );
+ ///
+ /// An event sent whenever a DataTransfer request error was sent.
+ ///
+ public event OnDataTransferRequestErrorSentDelegate? OnDataTransferRequestErrorSent;
+
+
+ public Task SendOnDataTransferRequestErrorSent(DateTime Timestamp,
+ IEventSender Sender,
+ IWebSocketConnection Connection,
+ DataTransferRequest? Request,
+ OCPP_JSONRequestErrorMessage RequestErrorMessage,
+ TimeSpan Runtime)
+ => LogEvent(
+ OnDataTransferRequestErrorSent,
+ loggingDelegate => loggingDelegate.Invoke(
+ Timestamp,
+ Sender,
+ Connection,
+ Request,
+ RequestErrorMessage,
+ Runtime
+ )
+ );
- }
+ #endregion
- return response;
+ #region Send OnDataTransferResponseErrorSent event
- }
+ ///
+ /// An event sent whenever a DataTransfer response error was sent.
+ ///
+ public event OnDataTransferResponseErrorSentDelegate? OnDataTransferResponseErrorSent;
+
+
+ public Task SendOnDataTransferResponseErrorSent(DateTime Timestamp,
+ IEventSender Sender,
+ IWebSocketConnection Connection,
+ DataTransferRequest? Request,
+ DataTransferResponse? Response,
+ OCPP_JSONResponseErrorMessage ResponseErrorMessage,
+ TimeSpan Runtime)
+ => LogEvent(
+ OnDataTransferResponseErrorSent,
+ loggingDelegate => loggingDelegate.Invoke(
+ Timestamp,
+ Sender,
+ Connection,
+ Request,
+ Response,
+ ResponseErrorMessage,
+ Runtime
+ )
+ );
#endregion
diff --git a/WWCP_OCPPv2.1_CSMS/HTTPAPI/HTTPAPI.cs b/WWCP_OCPPv2.1_CSMS/HTTPAPI/HTTPAPI.cs
index 957e10b4c..c1ee9675e 100644
--- a/WWCP_OCPPv2.1_CSMS/HTTPAPI/HTTPAPI.cs
+++ b/WWCP_OCPPv2.1_CSMS/HTTPAPI/HTTPAPI.cs
@@ -5588,7 +5588,8 @@ public void AttachCSMS(ACSMSNode NetworkingNode)
NetworkingNode.OCPP.IN.OnDataTransferRequestReceived += (timestamp,
sender,
connection,
- request) =>
+ request,
+ cancellationToken) =>
EventLog.SubmitEvent(nameof(NetworkingNode.OCPP.IN.OnDataTransferRequestReceived),
new JObject(
@@ -5616,38 +5617,51 @@ public void AttachCSMS(ACSMSNode NetworkingNode)
NetworkingNode.OCPP.IN.OnDataTransferResponseReceived += (timestamp,
sender,
- //connection,
+ connection,
request,
response,
- runtime) =>
-
- EventLog.SubmitEvent(nameof(NetworkingNode.OCPP.IN.OnDataTransferResponseReceived),
- new JObject(
- new JProperty("timestamp", timestamp. ToIso8601()),
- new JProperty("sender", sender.Id),
- //new JProperty("connection", connection.ToJSON()),
- new JProperty("request", request. ToJSON()),
- new JProperty("response", response. ToJSON()),
- new JProperty("runtime", runtime. TotalMilliseconds)
- ));
+ runtime,
+ cancellationToken) =>
+
+ EventLog.SubmitEvent(
+ nameof(NetworkingNode.OCPP.IN.OnBinaryDataTransferResponseReceived),
+ JSONObject.Create(
+ new JProperty("timestamp", timestamp. ToIso8601()),
+ new JProperty("sender", sender.Id),
+ new JProperty("connection", connection.ToJSON()),
+ request is not null
+ ? new JProperty("request", request. ToJSON())
+ : null,
+ new JProperty("response", response. ToJSON()),
+ runtime.HasValue
+ ? new JProperty("runtime", runtime.Value.TotalMilliseconds)
+ : null
+ )
+ );
NetworkingNode.OCPP.OUT.OnDataTransferResponseSent += (timestamp,
- sender,
- connection,
- request,
- response,
- runtime) =>
+ sender,
+ connection,
+ request,
+ response,
+ runtime) =>
- EventLog.SubmitEvent(nameof(NetworkingNode.OCPP.OUT.OnDataTransferResponseSent),
- new JObject(
- new JProperty("timestamp", timestamp. ToIso8601()),
- new JProperty("sender", sender.Id),
- new JProperty("connection", connection.ToJSON()),
- new JProperty("request", request. ToJSON()),
- new JProperty("response", response. ToJSON()),
- new JProperty("runtime", runtime. TotalMilliseconds)
- ));
+ EventLog.SubmitEvent(
+ nameof(NetworkingNode.OCPP.OUT.OnBinaryDataTransferResponseSent),
+ JSONObject.Create(
+ new JProperty("timestamp", timestamp. ToIso8601()),
+ new JProperty("sender", sender.Id),
+ new JProperty("connection", connection.ToJSON()),
+ request is not null
+ ? new JProperty("request", request. ToJSON())
+ : null,
+ new JProperty("response", response. ToJSON()),
+ runtime.HasValue
+ ? new JProperty("runtime", runtime.Value.TotalMilliseconds)
+ : null
+ )
+ );
#endregion
@@ -5656,7 +5670,8 @@ public void AttachCSMS(ACSMSNode NetworkingNode)
NetworkingNode.OCPP.IN.OnBinaryDataTransferRequestReceived += (timestamp,
sender,
connection,
- request) =>
+ request,
+ cancellationToken) =>
EventLog.SubmitEvent(nameof(NetworkingNode.OCPP.IN.OnBinaryDataTransferRequestReceived),
new JObject(
@@ -5677,7 +5692,7 @@ public void AttachCSMS(ACSMSNode NetworkingNode)
new JObject(
new JProperty("timestamp", timestamp. ToIso8601()),
new JProperty("sender", sender.Id),
- //new JProperty("connection", connection.ToJSON()),
+ new JProperty("connection", connection.ToJSON()),
new JProperty("request", request. ToBinary().ToBase64())
));
@@ -5687,17 +5702,24 @@ public void AttachCSMS(ACSMSNode NetworkingNode)
connection,
request,
response,
- runtime) =>
-
- EventLog.SubmitEvent(nameof(NetworkingNode.OCPP.IN.OnBinaryDataTransferResponseReceived),
- new JObject(
- new JProperty("timestamp", timestamp. ToIso8601()),
- new JProperty("sender", sender.Id),
- //new JProperty("connection", connection.ToJSON()),
- new JProperty("request", request. ToBinary().ToBase64()),
- new JProperty("response", response. ToBinary().ToBase64()),
- new JProperty("runtime", runtime. TotalMilliseconds)
- ));
+ runtime,
+ cancellationToken) =>
+
+ EventLog.SubmitEvent(
+ nameof(NetworkingNode.OCPP.IN.OnBinaryDataTransferResponseReceived),
+ JSONObject.Create(
+ new JProperty("timestamp", timestamp. ToIso8601()),
+ new JProperty("sender", sender.Id),
+ new JProperty("connection", connection.ToJSON()),
+ request is not null
+ ? new JProperty("request", request. ToBinary().ToBase64())
+ : null,
+ new JProperty("response", response. ToBinary().ToBase64()),
+ runtime.HasValue
+ ? new JProperty("runtime", runtime.Value.TotalMilliseconds)
+ : null
+ )
+ );
NetworkingNode.OCPP.OUT.OnBinaryDataTransferResponseSent += (timestamp,
@@ -5707,15 +5729,21 @@ public void AttachCSMS(ACSMSNode NetworkingNode)
response,
runtime) =>
- EventLog.SubmitEvent(nameof(NetworkingNode.OCPP.OUT.OnBinaryDataTransferResponseSent),
- new JObject(
- new JProperty("timestamp", timestamp. ToIso8601()),
- new JProperty("sender", sender.Id),
- new JProperty("connection", connection.ToJSON()),
- new JProperty("request", request. ToBinary().ToBase64()),
- new JProperty("response", response. ToBinary().ToBase64()),
- new JProperty("runtime", runtime. TotalMilliseconds)
- ));
+ EventLog.SubmitEvent(
+ nameof(NetworkingNode.OCPP.OUT.OnBinaryDataTransferResponseSent),
+ JSONObject.Create(
+ new JProperty("timestamp", timestamp. ToIso8601()),
+ new JProperty("sender", sender.Id),
+ new JProperty("connection", connection.ToJSON()),
+ request is not null
+ ? new JProperty("request", request. ToBinary().ToBase64())
+ : null,
+ new JProperty("response", response. ToBinary().ToBase64()),
+ runtime.HasValue
+ ? new JProperty("runtime", runtime.Value.TotalMilliseconds)
+ : null
+ )
+ );
#endregion
diff --git a/WWCP_OCPPv2.1_LocalController/HTTPAPI/HTTPAPI.cs b/WWCP_OCPPv2.1_LocalController/HTTPAPI/HTTPAPI.cs
index 0178e84bc..706a3393b 100644
--- a/WWCP_OCPPv2.1_LocalController/HTTPAPI/HTTPAPI.cs
+++ b/WWCP_OCPPv2.1_LocalController/HTTPAPI/HTTPAPI.cs
@@ -5585,9 +5585,10 @@ public void AttachLocalController(ALocalControllerNode LocalController)
#region OnDataTransfer
LocalController.OCPP.IN.OnDataTransferRequestReceived += (timestamp,
- sender,
- connection,
- request) =>
+ sender,
+ connection,
+ request,
+ cancellationToken) =>
EventLog.SubmitEvent(nameof(LocalController.OCPP.IN.OnDataTransferRequestReceived),
new JObject(
@@ -5614,48 +5615,62 @@ public void AttachLocalController(ALocalControllerNode LocalController)
LocalController.OCPP.IN.OnDataTransferResponseReceived += (timestamp,
- sender,
- //connection,
- request,
- response,
- runtime) =>
-
- EventLog.SubmitEvent(nameof(LocalController.OCPP.IN.OnDataTransferResponseReceived),
- new JObject(
- new JProperty("timestamp", timestamp. ToIso8601()),
- new JProperty("sender", sender.Id),
- //new JProperty("connection", connection.ToJSON()),
- new JProperty("request", request. ToJSON()),
- new JProperty("response", response. ToJSON()),
- new JProperty("runtime", runtime. TotalMilliseconds)
- ));
+ sender,
+ connection,
+ request,
+ response,
+ runtime,
+ cancellationToken) =>
+
+ EventLog.SubmitEvent(
+ nameof(LocalController.OCPP.IN.OnBinaryDataTransferResponseReceived),
+ JSONObject.Create(
+ new JProperty("timestamp", timestamp. ToIso8601()),
+ new JProperty("sender", sender.Id),
+ new JProperty("connection", connection.ToJSON()),
+ request is not null
+ ? new JProperty("request", request. ToJSON())
+ : null,
+ new JProperty("response", response. ToJSON()),
+ runtime.HasValue
+ ? new JProperty("runtime", runtime.Value.TotalMilliseconds)
+ : null
+ )
+ );
LocalController.OCPP.OUT.OnDataTransferResponseSent += (timestamp,
- sender,
- connection,
- request,
- response,
- runtime) =>
+ sender,
+ connection,
+ request,
+ response,
+ runtime) =>
- EventLog.SubmitEvent(nameof(LocalController.OCPP.OUT.OnDataTransferResponseSent),
- new JObject(
- new JProperty("timestamp", timestamp. ToIso8601()),
- new JProperty("sender", sender.Id),
- new JProperty("connection", connection.ToJSON()),
- new JProperty("request", request. ToJSON()),
- new JProperty("response", response. ToJSON()),
- new JProperty("runtime", runtime. TotalMilliseconds)
- ));
+ EventLog.SubmitEvent(
+ nameof(LocalController.OCPP.OUT.OnBinaryDataTransferResponseSent),
+ JSONObject.Create(
+ new JProperty("timestamp", timestamp. ToIso8601()),
+ new JProperty("sender", sender.Id),
+ new JProperty("connection", connection.ToJSON()),
+ request is not null
+ ? new JProperty("request", request. ToJSON())
+ : null,
+ new JProperty("response", response. ToJSON()),
+ runtime.HasValue
+ ? new JProperty("runtime", runtime.Value.TotalMilliseconds)
+ : null
+ )
+ );
#endregion
#region OnBinaryDataTransfer
LocalController.OCPP.IN.OnBinaryDataTransferRequestReceived += (timestamp,
- sender,
- connection,
- request) =>
+ sender,
+ connection,
+ request,
+ cancellationToken) =>
EventLog.SubmitEvent(nameof(LocalController.OCPP.IN.OnBinaryDataTransferRequestReceived),
new JObject(
@@ -5676,7 +5691,7 @@ public void AttachLocalController(ALocalControllerNode LocalController)
new JObject(
new JProperty("timestamp", timestamp. ToIso8601()),
new JProperty("sender", sender.Id),
- //new JProperty("connection", connection.ToJSON()),
+ new JProperty("connection", connection.ToJSON()),
new JProperty("request", request. ToBinary().ToBase64())
));
@@ -5686,35 +5701,48 @@ public void AttachLocalController(ALocalControllerNode LocalController)
connection,
request,
response,
- runtime) =>
-
- EventLog.SubmitEvent(nameof(LocalController.OCPP.IN.OnBinaryDataTransferResponseReceived),
- new JObject(
- new JProperty("timestamp", timestamp. ToIso8601()),
- new JProperty("sender", sender.Id),
- //new JProperty("connection", connection.ToJSON()),
- new JProperty("request", request. ToBinary().ToBase64()),
- new JProperty("response", response. ToBinary().ToBase64()),
- new JProperty("runtime", runtime. TotalMilliseconds)
- ));
+ runtime,
+ cancellationToken) =>
+
+ EventLog.SubmitEvent(
+ nameof(LocalController.OCPP.IN.OnBinaryDataTransferResponseReceived),
+ JSONObject.Create(
+ new JProperty("timestamp", timestamp. ToIso8601()),
+ new JProperty("sender", sender.Id),
+ new JProperty("connection", connection.ToJSON()),
+ request is not null
+ ? new JProperty("request", request. ToBinary().ToBase64())
+ : null,
+ new JProperty("response", response. ToBinary().ToBase64()),
+ runtime.HasValue
+ ? new JProperty("runtime", runtime.Value.TotalMilliseconds)
+ : null
+ )
+ );
LocalController.OCPP.OUT.OnBinaryDataTransferResponseSent += (timestamp,
- sender,
- connection,
- request,
- response,
- runtime) =>
+ sender,
+ connection,
+ request,
+ response,
+ runtime) =>
- EventLog.SubmitEvent(nameof(LocalController.OCPP.OUT.OnBinaryDataTransferResponseSent),
- new JObject(
- new JProperty("timestamp", timestamp. ToIso8601()),
- new JProperty("sender", sender.Id),
- new JProperty("connection", connection.ToJSON()),
- new JProperty("request", request. ToBinary().ToBase64()),
- new JProperty("response", response. ToBinary().ToBase64()),
- new JProperty("runtime", runtime. TotalMilliseconds)
- ));
+ EventLog.SubmitEvent(
+ nameof(LocalController.OCPP.OUT.OnBinaryDataTransferResponseSent),
+ JSONObject.Create(
+ new JProperty("timestamp", timestamp. ToIso8601()),
+ new JProperty("sender", sender.Id),
+ new JProperty("connection", connection.ToJSON()),
+ request is not null
+ ? new JProperty("request", request. ToBinary().ToBase64())
+ : null,
+ new JProperty("response", response. ToBinary().ToBase64()),
+ runtime.HasValue
+ ? new JProperty("runtime", runtime.Value.TotalMilliseconds)
+ : null
+ )
+ );
#endregion
diff --git a/WWCP_OCPPv2.1_Tests/CSMS/CSMS_Messages_Tests.cs b/WWCP_OCPPv2.1_Tests/CSMS/CSMS_Messages_Tests.cs
index 55b5050a1..1d6bff4a6 100644
--- a/WWCP_OCPPv2.1_Tests/CSMS/CSMS_Messages_Tests.cs
+++ b/WWCP_OCPPv2.1_Tests/CSMS/CSMS_Messages_Tests.cs
@@ -1608,7 +1608,7 @@ chargingStation2 is not null &&
var dataTransferRequests = new ConcurrentList();
- chargingStation1.OCPP.IN.OnDataTransferRequestReceived += (timestamp, sender, connection, dataTransferRequest) => {
+ chargingStation1.OCPP.IN.OnDataTransferRequestReceived += (timestamp, sender, connection, dataTransferRequest, ct) => {
dataTransferRequests.TryAdd(dataTransferRequest);
return Task.CompletedTask;
};
@@ -1664,7 +1664,7 @@ chargingStation2 is not null &&
var dataTransferRequests = new ConcurrentList();
- chargingStation1.OCPP.IN.OnDataTransferRequestReceived += (timestamp, sender, connection, dataTransferRequest) => {
+ chargingStation1.OCPP.IN.OnDataTransferRequestReceived += (timestamp, sender, connection, dataTransferRequest, ct) => {
dataTransferRequests.TryAdd(dataTransferRequest);
return Task.CompletedTask;
};
@@ -1727,7 +1727,7 @@ chargingStation2 is not null &&
var dataTransferRequests = new ConcurrentList();
- chargingStation1.OCPP.IN.OnDataTransferRequestReceived += (timestamp, sender, connection, dataTransferRequest) => {
+ chargingStation1.OCPP.IN.OnDataTransferRequestReceived += (timestamp, sender, connection, dataTransferRequest, ct) => {
dataTransferRequests.TryAdd(dataTransferRequest);
return Task.CompletedTask;
};
@@ -1787,7 +1787,7 @@ chargingStation2 is not null &&
var dataTransferRequests = new ConcurrentList();
- chargingStation1.OCPP.IN.OnDataTransferRequestReceived += (timestamp, sender, connection, dataTransferRequest) => {
+ chargingStation1.OCPP.IN.OnDataTransferRequestReceived += (timestamp, sender, connection, dataTransferRequest, ct) => {
dataTransferRequests.TryAdd(dataTransferRequest);
return Task.CompletedTask;
};
diff --git a/WWCP_OCPPv2.1_Tests/ChargingStation/CS_Messages_Tests.cs b/WWCP_OCPPv2.1_Tests/ChargingStation/CS_Messages_Tests.cs
index 58ff049f9..d54150e44 100644
--- a/WWCP_OCPPv2.1_Tests/ChargingStation/CS_Messages_Tests.cs
+++ b/WWCP_OCPPv2.1_Tests/ChargingStation/CS_Messages_Tests.cs
@@ -654,7 +654,7 @@ chargingStation2 is not null &&
var dataTransferRequests= new ConcurrentList();
- testCSMS01.OCPP.IN.OnDataTransferRequestReceived += (timestamp, sender, connection, dataTransferRequest) => {
+ testCSMS01.OCPP.IN.OnDataTransferRequestReceived += (timestamp, sender, connection, dataTransferRequest, ct) => {
dataTransferRequests.TryAdd(dataTransferRequest);
return Task.CompletedTask;
};
@@ -709,7 +709,7 @@ chargingStation2 is not null &&
var dataTransferRequests= new ConcurrentList();
- testCSMS01.OCPP.IN.OnDataTransferRequestReceived += (timestamp, sender, connection, dataTransferRequest) => {
+ testCSMS01.OCPP.IN.OnDataTransferRequestReceived += (timestamp, sender, connection, dataTransferRequest, ct) => {
dataTransferRequests.TryAdd(dataTransferRequest);
return Task.CompletedTask;
};
@@ -771,7 +771,7 @@ chargingStation2 is not null &&
var dataTransferRequests= new ConcurrentList();
- testCSMS01.OCPP.IN.OnDataTransferRequestReceived += (timestamp, sender, connection, dataTransferRequest) => {
+ testCSMS01.OCPP.IN.OnDataTransferRequestReceived += (timestamp, sender, connection, dataTransferRequest, ct) => {
dataTransferRequests.TryAdd(dataTransferRequest);
return Task.CompletedTask;
};
diff --git a/WWCP_OCPPv2.1_Tests/Extensions/BinaryStreamsExtensions/CSMS/CSMS_SendBinaryData_Tests.cs b/WWCP_OCPPv2.1_Tests/Extensions/BinaryStreamsExtensions/CSMS/CSMS_SendBinaryData_Tests.cs
index 505c65ec1..322836f08 100644
--- a/WWCP_OCPPv2.1_Tests/Extensions/BinaryStreamsExtensions/CSMS/CSMS_SendBinaryData_Tests.cs
+++ b/WWCP_OCPPv2.1_Tests/Extensions/BinaryStreamsExtensions/CSMS/CSMS_SendBinaryData_Tests.cs
@@ -65,7 +65,7 @@ chargingStation2 is not null &&
var binaryDataTransferRequests = new ConcurrentList();
- chargingStation1.OCPP.IN.OnBinaryDataTransferRequestReceived += (timestamp, sender, connection, binaryDataTransferRequest) => {
+ chargingStation1.OCPP.IN.OnBinaryDataTransferRequestReceived += (timestamp, sender, connection, binaryDataTransferRequest, ct) => {
binaryDataTransferRequests.TryAdd(binaryDataTransferRequest);
return Task.CompletedTask;
};
diff --git a/WWCP_OCPPv2.1_Tests/Extensions/BinaryStreamsExtensions/ChargingStation/CS_SendBinaryData_Tests.cs b/WWCP_OCPPv2.1_Tests/Extensions/BinaryStreamsExtensions/ChargingStation/CS_SendBinaryData_Tests.cs
index 7793441db..067f01fbf 100644
--- a/WWCP_OCPPv2.1_Tests/Extensions/BinaryStreamsExtensions/ChargingStation/CS_SendBinaryData_Tests.cs
+++ b/WWCP_OCPPv2.1_Tests/Extensions/BinaryStreamsExtensions/ChargingStation/CS_SendBinaryData_Tests.cs
@@ -63,7 +63,7 @@ chargingStation2 is not null &&
var binaryDataTransferRequests= new ConcurrentList();
- testCSMS01.OCPP.IN.OnBinaryDataTransferRequestReceived += (timestamp, sender, connection, binaryDataTransferRequest) => {
+ testCSMS01.OCPP.IN.OnBinaryDataTransferRequestReceived += (timestamp, sender, connection, binaryDataTransferRequest, ct) => {
binaryDataTransferRequests.TryAdd(binaryDataTransferRequest);
return Task.CompletedTask;
};
diff --git a/WWCP_OCPPv2.1_Tests/NetworkingNode/CSMS/CSMS_Messages_Tests.cs b/WWCP_OCPPv2.1_Tests/NetworkingNode/CSMS/CSMS_Messages_Tests.cs
index b096ba130..2488a443a 100644
--- a/WWCP_OCPPv2.1_Tests/NetworkingNode/CSMS/CSMS_Messages_Tests.cs
+++ b/WWCP_OCPPv2.1_Tests/NetworkingNode/CSMS/CSMS_Messages_Tests.cs
@@ -200,7 +200,7 @@ chargingStation2 is not null &&
// return Task.CompletedTask;
//};
- chargingStation1.OCPP.IN. OnDataTransferRequestReceived += (timestamp, sender, connection, incomingDataTransferRequest) => {
+ chargingStation1.OCPP.IN. OnDataTransferRequestReceived += (timestamp, sender, connection, incomingDataTransferRequest, ct) => {
csIncomingDataTransferRequests.TryAdd(incomingDataTransferRequest);
return Task.CompletedTask;
};
@@ -320,7 +320,7 @@ chargingStation2 is not null &&
// return Task.CompletedTask;
//};
- chargingStation1.OCPP.IN. OnBinaryDataTransferRequestReceived += (timestamp, sender, connection, incomingBinaryDataTransferRequest) => {
+ chargingStation1.OCPP.IN. OnBinaryDataTransferRequestReceived += (timestamp, sender, connection, incomingBinaryDataTransferRequest, ct) => {
csIncomingBinaryDataTransferRequests.TryAdd(incomingBinaryDataTransferRequest);
return Task.CompletedTask;
};
diff --git a/WWCP_OCPPv2.1_Tests/NetworkingNode/ChargingStation/CS_Messages_Tests.cs b/WWCP_OCPPv2.1_Tests/NetworkingNode/ChargingStation/CS_Messages_Tests.cs
index 501b10f99..34d8a070f 100644
--- a/WWCP_OCPPv2.1_Tests/NetworkingNode/ChargingStation/CS_Messages_Tests.cs
+++ b/WWCP_OCPPv2.1_Tests/NetworkingNode/ChargingStation/CS_Messages_Tests.cs
@@ -255,7 +255,7 @@ chargingStation2 is not null &&
// return Task.CompletedTask;
//};
- testCSMS01.OCPP.IN.OnBinaryDataTransferRequestReceived += (timestamp, sender, connection, incomingBinaryDataTransferRequest) => {
+ testCSMS01.OCPP.IN.OnBinaryDataTransferRequestReceived += (timestamp, sender, connection, incomingBinaryDataTransferRequest, ct) => {
csmsIncomingBinaryDataTransferRequests.TryAdd(incomingBinaryDataTransferRequest);
return Task.CompletedTask;
};
diff --git a/WWCP_OCPPv2.1_Tests/NetworkingNode/DefaultOverlayNetwork/CSMS_2_CS_Tests.cs b/WWCP_OCPPv2.1_Tests/NetworkingNode/DefaultOverlayNetwork/CSMS_2_CS_Tests.cs
index 55c0bbeb8..b723fd232 100644
--- a/WWCP_OCPPv2.1_Tests/NetworkingNode/DefaultOverlayNetwork/CSMS_2_CS_Tests.cs
+++ b/WWCP_OCPPv2.1_Tests/NetworkingNode/DefaultOverlayNetwork/CSMS_2_CS_Tests.cs
@@ -218,7 +218,7 @@ lcOCPPWebSocketServer is not null &&
return Task.CompletedTask;
};
- chargingStation.OCPP.IN. OnDataTransferRequestReceived += (timestamp, sender, connection, DataTransferRequest) => {
+ chargingStation.OCPP.IN. OnDataTransferRequestReceived += (timestamp, sender, connection, DataTransferRequest, ct) => {
csDataTransferRequests. TryAdd(DataTransferRequest);
return Task.CompletedTask;
};
@@ -228,7 +228,7 @@ lcOCPPWebSocketServer is not null &&
return Task.CompletedTask;
};
- CSMS. OCPP.IN. OnDataTransferResponseReceived += (timestamp, sender, DataTransferRequest, DataTransferResponse, runtime) => {
+ CSMS. OCPP.IN. OnDataTransferResponseReceived += (timestamp, sender, connection, DataTransferRequest, DataTransferResponse, runtime, ct) => {
csmsDataTransferResponsesReceived.TryAdd(DataTransferResponse);
return Task.CompletedTask;
};
diff --git a/WWCP_OCPPv2.1_Tests/NetworkingNode/DefaultOverlayNetwork/CSMS_2_NN_Tests.cs b/WWCP_OCPPv2.1_Tests/NetworkingNode/DefaultOverlayNetwork/CSMS_2_NN_Tests.cs
index b1c2a4e80..2bfbde0e5 100644
--- a/WWCP_OCPPv2.1_Tests/NetworkingNode/DefaultOverlayNetwork/CSMS_2_NN_Tests.cs
+++ b/WWCP_OCPPv2.1_Tests/NetworkingNode/DefaultOverlayNetwork/CSMS_2_NN_Tests.cs
@@ -193,7 +193,7 @@ CSMS is not null &&
return Task.CompletedTask;
};
- localController.OCPP.IN. OnDataTransferRequestReceived += (timestamp, sender, connection, dataTransferRequest) => {
+ localController.OCPP.IN. OnDataTransferRequestReceived += (timestamp, sender, connection, dataTransferRequest, ct) => {
nnDataTransferRequestsReceived. TryAdd(dataTransferRequest);
return Task.CompletedTask;
};
@@ -208,7 +208,7 @@ CSMS is not null &&
return Task.CompletedTask;
};
- CSMS. OCPP.IN. OnDataTransferResponseReceived += (timestamp, sender, dataTransferRequest, dataTransferResponse, runtime) => {
+ CSMS. OCPP.IN. OnDataTransferResponseReceived += (timestamp, sender, connection, dataTransferRequest, dataTransferResponse, runtime, ct) => {
csmsDataTransferResponsesReceived.TryAdd(dataTransferResponse);
return Task.CompletedTask;
};
diff --git a/WWCP_OCPPv2.1_Tests/NetworkingNode/DefaultOverlayNetwork/CS_2_CSMS_Tests.cs b/WWCP_OCPPv2.1_Tests/NetworkingNode/DefaultOverlayNetwork/CS_2_CSMS_Tests.cs
index f9f9518fc..88797c27e 100644
--- a/WWCP_OCPPv2.1_Tests/NetworkingNode/DefaultOverlayNetwork/CS_2_CSMS_Tests.cs
+++ b/WWCP_OCPPv2.1_Tests/NetworkingNode/DefaultOverlayNetwork/CS_2_CSMS_Tests.cs
@@ -254,7 +254,7 @@ CSMS is not null &&
return Task.CompletedTask;
};
- CSMS. OCPP.IN. OnDataTransferRequestReceived += (timestamp, sender, connection, dataTransferRequest) => {
+ CSMS. OCPP.IN. OnDataTransferRequestReceived += (timestamp, sender, connection, dataTransferRequest, ct) => {
csmsDataTransferRequests. TryAdd(dataTransferRequest);
return Task.CompletedTask;
};
@@ -264,7 +264,7 @@ CSMS is not null &&
return Task.CompletedTask;
};
- chargingStation.OCPP.IN. OnDataTransferResponseReceived += (timestamp, sender, dataTransferRequest, dataTransferResponse, runtime) => {
+ chargingStation.OCPP.IN. OnDataTransferResponseReceived += (timestamp, sender, connection, dataTransferRequest, dataTransferResponse, runtime, ct) => {
csDataTransferResponsesReceived. TryAdd(dataTransferResponse);
return Task.CompletedTask;
};
@@ -413,7 +413,7 @@ CSMS is not null &&
return Task.CompletedTask;
};
- CSMS. OCPP.IN. OnDataTransferRequestReceived += (timestamp, sender, connection, dataTransferRequest) => {
+ CSMS. OCPP.IN. OnDataTransferRequestReceived += (timestamp, sender, connection, dataTransferRequest, ct) => {
csmsDataTransferRequests. TryAdd(dataTransferRequest);
return Task.CompletedTask;
};
@@ -423,7 +423,7 @@ CSMS is not null &&
return Task.CompletedTask;
};
- chargingStation.OCPP.IN. OnDataTransferResponseReceived += (timestamp, sender, dataTransferRequest, dataTransferResponse, runtime) => {
+ chargingStation.OCPP.IN. OnDataTransferResponseReceived += (timestamp, sender, connection, dataTransferRequest, dataTransferResponse, runtime, ct) => {
csDataTransferResponsesReceived. TryAdd(dataTransferResponse);
return Task.CompletedTask;
};
diff --git a/WWCP_OCPPv2.1_Tests/NetworkingNode/DefaultOverlayNetwork/CS_2_NN_Tests.cs b/WWCP_OCPPv2.1_Tests/NetworkingNode/DefaultOverlayNetwork/CS_2_NN_Tests.cs
index 63d473bea..3bc4280c1 100644
--- a/WWCP_OCPPv2.1_Tests/NetworkingNode/DefaultOverlayNetwork/CS_2_NN_Tests.cs
+++ b/WWCP_OCPPv2.1_Tests/NetworkingNode/DefaultOverlayNetwork/CS_2_NN_Tests.cs
@@ -236,7 +236,7 @@ lcOCPPWebSocketServer is not null &&
return Task.CompletedTask;
};
- localController.OCPP.IN. OnDataTransferRequestReceived += (timestamp, sender, connection, dataTransferRequest) => {
+ localController.OCPP.IN. OnDataTransferRequestReceived += (timestamp, sender, connection, dataTransferRequest, ct) => {
nnDataTransferRequestsReceived. TryAdd(dataTransferRequest);
return Task.CompletedTask;
};
@@ -251,7 +251,7 @@ lcOCPPWebSocketServer is not null &&
return Task.CompletedTask;
};
- chargingStation.OCPP.IN. OnDataTransferResponseReceived += (timestamp, sender, dataTransferRequest, dataTransferResponse, runtime) => {
+ chargingStation.OCPP.IN. OnDataTransferResponseReceived += (timestamp, sender, connection, dataTransferRequest, dataTransferResponse, runtime, ct) => {
csDataTransferResponsesReceived.TryAdd(dataTransferResponse);
return Task.CompletedTask;
};
@@ -388,7 +388,7 @@ lcOCPPWebSocketServer is not null &&
return Task.CompletedTask;
};
- localController.OCPP.IN.OnBinaryDataTransferRequestReceived += (timestamp, sender, connection, bootNotificationRequest) => {
+ localController.OCPP.IN.OnBinaryDataTransferRequestReceived += (timestamp, sender, connection, bootNotificationRequest, ct) => {
nnBinaryDataTransferRequestsReceived. TryAdd(bootNotificationRequest);
return Task.CompletedTask;
};
@@ -403,7 +403,7 @@ lcOCPPWebSocketServer is not null &&
return Task.CompletedTask;
};
- chargingStation.OCPP.IN. OnBinaryDataTransferResponseReceived += (timestamp, sender, connection, bootNotificationRequest, bootNotificationResponse, runtime) => {
+ chargingStation.OCPP.IN. OnBinaryDataTransferResponseReceived += (timestamp, sender, connection, bootNotificationRequest, bootNotificationResponse, runtime, ct) => {
csBinaryDataTransferResponsesReceived.TryAdd(bootNotificationResponse);
return Task.CompletedTask;
};
diff --git a/WWCP_OCPPv2.1_Tests/NetworkingNode/DefaultOverlayNetwork/NN_2_CSMS_Tests.cs b/WWCP_OCPPv2.1_Tests/NetworkingNode/DefaultOverlayNetwork/NN_2_CSMS_Tests.cs
index c945aa2ad..c14515b85 100644
--- a/WWCP_OCPPv2.1_Tests/NetworkingNode/DefaultOverlayNetwork/NN_2_CSMS_Tests.cs
+++ b/WWCP_OCPPv2.1_Tests/NetworkingNode/DefaultOverlayNetwork/NN_2_CSMS_Tests.cs
@@ -335,7 +335,7 @@ CSMS is not null &&
return Task.CompletedTask;
};
- CSMS. OCPP.IN. OnDataTransferRequestReceived += (timestamp, sender, connection, dataTransferRequest) => {
+ CSMS. OCPP.IN. OnDataTransferRequestReceived += (timestamp, sender, connection, dataTransferRequest, ct) => {
csmsDataTransferRequests. TryAdd(dataTransferRequest);
return Task.CompletedTask;
};
@@ -345,7 +345,7 @@ CSMS is not null &&
return Task.CompletedTask;
};
- localController.OCPP.IN. OnDataTransferResponseReceived += (timestamp, sender, dataTransferRequest, bootNotificationResponse, runtime) => {
+ localController.OCPP.IN. OnDataTransferResponseReceived += (timestamp, sender, connection, dataTransferRequest, bootNotificationResponse, runtime, ct) => {
nnDataTransferResponsesReceived. TryAdd(bootNotificationResponse);
return Task.CompletedTask;
};
diff --git a/WWCP_OCPPv2.1_Tests/NetworkingNode/DefaultOverlayNetwork/NN_2_CS_Tests.cs b/WWCP_OCPPv2.1_Tests/NetworkingNode/DefaultOverlayNetwork/NN_2_CS_Tests.cs
index 33a8c2354..578f82848 100644
--- a/WWCP_OCPPv2.1_Tests/NetworkingNode/DefaultOverlayNetwork/NN_2_CS_Tests.cs
+++ b/WWCP_OCPPv2.1_Tests/NetworkingNode/DefaultOverlayNetwork/NN_2_CS_Tests.cs
@@ -197,7 +197,7 @@ lcOCPPWebSocketServer is not null &&
return Task.CompletedTask;
};
- chargingStation.OCPP.IN. OnDataTransferRequestReceived += (timestamp, sender, connection, dataTransferRequest) => {
+ chargingStation.OCPP.IN. OnDataTransferRequestReceived += (timestamp, sender, connection, dataTransferRequest, ct) => {
csDataTransferRequests. TryAdd(dataTransferRequest);
return Task.CompletedTask;
};
@@ -207,7 +207,7 @@ lcOCPPWebSocketServer is not null &&
return Task.CompletedTask;
};
- localController.OCPP.IN. OnDataTransferResponseReceived += (timestamp, sender, dataTransferRequest, resetResponse, runtime) => {
+ localController.OCPP.IN. OnDataTransferResponseReceived += (timestamp, sender, connection, dataTransferRequest, resetResponse, runtime, ct) => {
nnDataTransferResponsesReceived.TryAdd(resetResponse);
return Task.CompletedTask;
};
diff --git a/WWCP_OCPPv2.1_Tests/OverlayNetworking/CSMS/CSMS_Messages_Tests.cs b/WWCP_OCPPv2.1_Tests/OverlayNetworking/CSMS/CSMS_Messages_Tests.cs
index 00e2a8669..1379ca5bd 100644
--- a/WWCP_OCPPv2.1_Tests/OverlayNetworking/CSMS/CSMS_Messages_Tests.cs
+++ b/WWCP_OCPPv2.1_Tests/OverlayNetworking/CSMS/CSMS_Messages_Tests.cs
@@ -200,7 +200,7 @@ chargingStation2 is not null &&
// return Task.CompletedTask;
//};
- chargingStation1.OCPP.IN. OnDataTransferRequestReceived += (timestamp, sender, connection, incomingDataTransferRequest) => {
+ chargingStation1.OCPP.IN. OnDataTransferRequestReceived += (timestamp, sender, connection, incomingDataTransferRequest, ct) => {
csIncomingDataTransferRequests.TryAdd(incomingDataTransferRequest);
return Task.CompletedTask;
};
@@ -320,7 +320,7 @@ chargingStation2 is not null &&
// return Task.CompletedTask;
//};
- chargingStation1.OCPP.IN. OnBinaryDataTransferRequestReceived += (timestamp, sender, connection, incomingBinaryDataTransferRequest) => {
+ chargingStation1.OCPP.IN. OnBinaryDataTransferRequestReceived += (timestamp, sender, connection, incomingBinaryDataTransferRequest, ct) => {
csIncomingBinaryDataTransferRequests.TryAdd(incomingBinaryDataTransferRequest);
return Task.CompletedTask;
};
diff --git a/WWCP_OCPPv2.1_Tests/OverlayNetworking/ChargingStation/CS_Messages_Tests.cs b/WWCP_OCPPv2.1_Tests/OverlayNetworking/ChargingStation/CS_Messages_Tests.cs
index aad3bdaa3..63f4ab8df 100644
--- a/WWCP_OCPPv2.1_Tests/OverlayNetworking/ChargingStation/CS_Messages_Tests.cs
+++ b/WWCP_OCPPv2.1_Tests/OverlayNetworking/ChargingStation/CS_Messages_Tests.cs
@@ -255,7 +255,7 @@ chargingStation2 is not null &&
// return Task.CompletedTask;
//};
- testCSMS01. OCPP.IN. OnBinaryDataTransferRequestReceived += (timestamp, sender, connection, incomingBinaryDataTransferRequest) => {
+ testCSMS01. OCPP.IN. OnBinaryDataTransferRequestReceived += (timestamp, sender, connection, incomingBinaryDataTransferRequest, ct) => {
csmsIncomingBinaryDataTransferRequests.TryAdd(incomingBinaryDataTransferRequest);
return Task.CompletedTask;
};
diff --git a/WWCP_OCPPv2.1_Tests/OverlayNetworking/DefaultOverlayNetwork/CSMS_2_CS_Tests.cs b/WWCP_OCPPv2.1_Tests/OverlayNetworking/DefaultOverlayNetwork/CSMS_2_CS_Tests.cs
index fa0af76ad..52fa80b26 100644
--- a/WWCP_OCPPv2.1_Tests/OverlayNetworking/DefaultOverlayNetwork/CSMS_2_CS_Tests.cs
+++ b/WWCP_OCPPv2.1_Tests/OverlayNetworking/DefaultOverlayNetwork/CSMS_2_CS_Tests.cs
@@ -218,7 +218,7 @@ lcOCPPWebSocketServer is not null &&
return Task.CompletedTask;
};
- chargingStation.OCPP.IN. OnDataTransferRequestReceived += (timestamp, sender, connection, DataTransferRequest) => {
+ chargingStation.OCPP.IN. OnDataTransferRequestReceived += (timestamp, sender, connection, DataTransferRequest, ct) => {
csDataTransferRequests. TryAdd(DataTransferRequest);
return Task.CompletedTask;
};
@@ -228,7 +228,7 @@ lcOCPPWebSocketServer is not null &&
return Task.CompletedTask;
};
- CSMS. OCPP.IN. OnDataTransferResponseReceived += (timestamp, sender, DataTransferRequest, DataTransferResponse, runtime) => {
+ CSMS. OCPP.IN. OnDataTransferResponseReceived += (timestamp, sender, connection, DataTransferRequest, DataTransferResponse, runtime, ct) => {
csmsDataTransferResponsesReceived.TryAdd(DataTransferResponse);
return Task.CompletedTask;
};
diff --git a/WWCP_OCPPv2.1_Tests/OverlayNetworking/DefaultOverlayNetwork/CSMS_2_LC_Tests.cs b/WWCP_OCPPv2.1_Tests/OverlayNetworking/DefaultOverlayNetwork/CSMS_2_LC_Tests.cs
index f7fde9267..154ec0351 100644
--- a/WWCP_OCPPv2.1_Tests/OverlayNetworking/DefaultOverlayNetwork/CSMS_2_LC_Tests.cs
+++ b/WWCP_OCPPv2.1_Tests/OverlayNetworking/DefaultOverlayNetwork/CSMS_2_LC_Tests.cs
@@ -194,7 +194,7 @@ CSMS is not null &&
return Task.CompletedTask;
};
- localController.OCPP.IN. OnDataTransferRequestReceived += (timestamp, sender, connection, dataTransferRequest) => {
+ localController.OCPP.IN. OnDataTransferRequestReceived += (timestamp, sender, connection, dataTransferRequest, ct) => {
nnDataTransferRequestsReceived. TryAdd(dataTransferRequest);
return Task.CompletedTask;
};
@@ -209,7 +209,7 @@ CSMS is not null &&
return Task.CompletedTask;
};
- CSMS. OCPP.IN. OnDataTransferResponseReceived += (timestamp, sender, dataTransferRequest, dataTransferResponse, runtime) => {
+ CSMS. OCPP.IN. OnDataTransferResponseReceived += (timestamp, sender, connection, dataTransferRequest, dataTransferResponse, runtime, ct) => {
csmsDataTransferResponsesReceived.TryAdd(dataTransferResponse);
return Task.CompletedTask;
};
diff --git a/WWCP_OCPPv2.1_Tests/OverlayNetworking/DefaultOverlayNetwork/CS_2_CSMS_Tests.cs b/WWCP_OCPPv2.1_Tests/OverlayNetworking/DefaultOverlayNetwork/CS_2_CSMS_Tests.cs
index ccf227a6c..6e6791e32 100644
--- a/WWCP_OCPPv2.1_Tests/OverlayNetworking/DefaultOverlayNetwork/CS_2_CSMS_Tests.cs
+++ b/WWCP_OCPPv2.1_Tests/OverlayNetworking/DefaultOverlayNetwork/CS_2_CSMS_Tests.cs
@@ -266,7 +266,7 @@ CSMS is not null &&
return Task.CompletedTask;
};
- chargingStation.OCPP.IN. OnDataTransferResponseReceived += (timestamp, sender, dataTransferRequest, dataTransferResponse, runtime) => {
+ chargingStation.OCPP.IN. OnDataTransferResponseReceived += (timestamp, sender, connection, dataTransferRequest, dataTransferResponse, runtime, ct) => {
csDataTransferResponsesReceived. TryAdd(dataTransferResponse);
return Task.CompletedTask;
};
@@ -425,7 +425,7 @@ CSMS is not null &&
return Task.CompletedTask;
};
- chargingStation.OCPP.IN. OnDataTransferResponseReceived += (timestamp, sender, dataTransferRequest, dataTransferResponse, runtime) => {
+ chargingStation.OCPP.IN. OnDataTransferResponseReceived += (timestamp, sender, connection, dataTransferRequest, dataTransferResponse, runtime, ct) => {
csDataTransferResponsesReceived. TryAdd(dataTransferResponse);
return Task.CompletedTask;
};
diff --git a/WWCP_OCPPv2.1_Tests/OverlayNetworking/DefaultOverlayNetwork/CS_2_LC_Tests.cs b/WWCP_OCPPv2.1_Tests/OverlayNetworking/DefaultOverlayNetwork/CS_2_LC_Tests.cs
index 292c3d7e6..397472e97 100644
--- a/WWCP_OCPPv2.1_Tests/OverlayNetworking/DefaultOverlayNetwork/CS_2_LC_Tests.cs
+++ b/WWCP_OCPPv2.1_Tests/OverlayNetworking/DefaultOverlayNetwork/CS_2_LC_Tests.cs
@@ -237,7 +237,7 @@ lcOCPPWebSocketServer is not null &&
return Task.CompletedTask;
};
- localController.OCPP.IN.OnDataTransferRequestReceived += (timestamp, sender, connection, dataTransferRequest) => {
+ localController.OCPP.IN.OnDataTransferRequestReceived += (timestamp, sender, connection, dataTransferRequest, ct) => {
nnDataTransferRequestsReceived. TryAdd(dataTransferRequest);
return Task.CompletedTask;
};
@@ -252,7 +252,7 @@ lcOCPPWebSocketServer is not null &&
return Task.CompletedTask;
};
- chargingStation.OCPP.IN. OnDataTransferResponseReceived += (timestamp, sender, dataTransferRequest, dataTransferResponse, runtime) => {
+ chargingStation.OCPP.IN. OnDataTransferResponseReceived += (timestamp, sender, connection, dataTransferRequest, dataTransferResponse, runtime, ct) => {
csDataTransferResponsesReceived.TryAdd(dataTransferResponse);
return Task.CompletedTask;
};
@@ -389,7 +389,7 @@ lcOCPPWebSocketServer is not null &&
return Task.CompletedTask;
};
- localController.OCPP.IN.OnBinaryDataTransferRequestReceived += (timestamp, sender, connection, bootNotificationRequest) => {
+ localController.OCPP.IN.OnBinaryDataTransferRequestReceived += (timestamp, sender, connection, bootNotificationRequest, ct) => {
nnBinaryDataTransferRequestsReceived. TryAdd(bootNotificationRequest);
return Task.CompletedTask;
};
@@ -404,7 +404,7 @@ lcOCPPWebSocketServer is not null &&
return Task.CompletedTask;
};
- chargingStation.OCPP.IN. OnBinaryDataTransferResponseReceived += (timestamp, sender, connection, bootNotificationRequest, bootNotificationResponse, runtime) => {
+ chargingStation.OCPP.IN. OnBinaryDataTransferResponseReceived += (timestamp, sender, connection, bootNotificationRequest, bootNotificationResponse, runtime, ct) => {
csBinaryDataTransferResponsesReceived.TryAdd(bootNotificationResponse);
return Task.CompletedTask;
};
diff --git a/WWCP_OCPPv2.1_Tests/OverlayNetworking/DefaultOverlayNetwork/LC_2_CSMS_Tests.cs b/WWCP_OCPPv2.1_Tests/OverlayNetworking/DefaultOverlayNetwork/LC_2_CSMS_Tests.cs
index d7f357c22..8b362f1a3 100644
--- a/WWCP_OCPPv2.1_Tests/OverlayNetworking/DefaultOverlayNetwork/LC_2_CSMS_Tests.cs
+++ b/WWCP_OCPPv2.1_Tests/OverlayNetworking/DefaultOverlayNetwork/LC_2_CSMS_Tests.cs
@@ -335,7 +335,7 @@ CSMS is not null &&
return Task.CompletedTask;
};
- CSMS. OCPP.IN. OnDataTransferRequestReceived += (timestamp, sender, connection, dataTransferRequest) => {
+ CSMS. OCPP.IN. OnDataTransferRequestReceived += (timestamp, sender, connection, dataTransferRequest, ct) => {
csmsDataTransferRequests. TryAdd(dataTransferRequest);
return Task.CompletedTask;
};
@@ -345,7 +345,7 @@ CSMS is not null &&
return Task.CompletedTask;
};
- localController.OCPP.IN. OnDataTransferResponseReceived += (timestamp, sender, dataTransferRequest, bootNotificationResponse, runtime) => {
+ localController.OCPP.IN. OnDataTransferResponseReceived += (timestamp, sender, connection, dataTransferRequest, bootNotificationResponse, runtime, ct) => {
nnDataTransferResponsesReceived. TryAdd(bootNotificationResponse);
return Task.CompletedTask;
};
diff --git a/WWCP_OCPPv2.1_Tests/OverlayNetworking/DefaultOverlayNetwork/LC_2_CS_Tests.cs b/WWCP_OCPPv2.1_Tests/OverlayNetworking/DefaultOverlayNetwork/LC_2_CS_Tests.cs
index ca1a7e0fd..20034950f 100644
--- a/WWCP_OCPPv2.1_Tests/OverlayNetworking/DefaultOverlayNetwork/LC_2_CS_Tests.cs
+++ b/WWCP_OCPPv2.1_Tests/OverlayNetworking/DefaultOverlayNetwork/LC_2_CS_Tests.cs
@@ -197,7 +197,7 @@ lcOCPPWebSocketServer is not null &&
return Task.CompletedTask;
};
- chargingStation.OCPP.IN. OnDataTransferRequestReceived += (timestamp, sender, connection, dataTransferRequest) => {
+ chargingStation.OCPP.IN. OnDataTransferRequestReceived += (timestamp, sender, connection, dataTransferRequest, ct) => {
csDataTransferRequests. TryAdd(dataTransferRequest);
return Task.CompletedTask;
};
@@ -207,7 +207,7 @@ lcOCPPWebSocketServer is not null &&
return Task.CompletedTask;
};
- localController.OCPP.IN. OnDataTransferResponseReceived += (timestamp, sender, dataTransferRequest, resetResponse, runtime) => {
+ localController.OCPP.IN. OnDataTransferResponseReceived += (timestamp, sender, connection, dataTransferRequest, resetResponse, runtime, ct) => {
nnDataTransferResponsesReceived.TryAdd(resetResponse);
return Task.CompletedTask;
};