public static void Insert <TResponse>(IProtocolRequest <TResponse> request, AuthenticationContext authenticationContext) where TResponse : IProtocolResponse { lock (_lock) { _authenticationContexts.Add(request.GetHashCode(), authenticationContext); } }
public static AuthenticationContext Get <TResponse>(IProtocolRequest <TResponse> request) where TResponse : IProtocolResponse { lock (_lock) { if (_authenticationContexts.TryGetValue(request.GetHashCode(), out AuthenticationContext context)) { return(context); } return(null); } }
public TResponse Execute <TResponse>(IProtocolRequest <TResponse> request) where TResponse : class, IProtocolResponse, new() { if (_connection == null) { throw new ConnectionRequiredException(); } MessageHeadersDictionary headers = new MessageHeadersDictionary(); byte[] requestHeaders = ProtocolMessageHeaderSerializer.Serialize(headers); byte[] requestBody = ProtocolBodySerializer.Serialize(request); byte[] requestIdentifier = _encoder.Encode(request.GetIdentifier()); IList <ArraySegment <byte> > serializedRequest = ProtocolSerializer.Serialize(requestIdentifier, requestHeaders, requestBody); byte[] responseEncoded = _connection.Send(serializedRequest); var deserializedObject = ProtocolSerializer.Deserialize(responseEncoded); string expectedIdentifier = new TResponse().GetIdentifier(); string identifier = _encoder.Decode(deserializedObject.ControlCommand); if (identifier != expectedIdentifier) { if (identifier == ErrorResponse.Identifier) { ErrorResponse errorResponse = ProtocolBodySerializer.Deserialize <ErrorResponse>(deserializedObject.Body); throw new CustomException(errorResponse.Message); } throw new InvalidResponseException(); } TResponse response = ProtocolBodySerializer.Deserialize <TResponse>(deserializedObject.Body); return(response); }
public Task <TResponse> ExecuteAsync <TResponse>(IProtocolRequest <TResponse> request) where TResponse : class, IProtocolResponse, new() { throw new NotImplementedException(); }