public DisconnectionResponse Disconnect(DisconnectionMessage message) { lock (@lock) { var response = new DisconnectionResponse(); Logger.Debug($"Received disconnection request with message '{ToString(message)}'."); if (IsAuthorized(message?.CommunicationToken)) { OnDisconnect(message.Interlocutor); response.ConnectionTerminated = true; CommunicationToken.Remove(message.CommunicationToken); } return(response); } }
public ConnectionResponse Connect(Guid?token = null) { lock (@lock) { Logger.Debug($"Received connection request {(token.HasValue ? $"with authentication token '{token}'" : "without authentication token")}."); var response = new ConnectionResponse(); var connected = OnConnect(token); if (connected) { var communicationToken = Guid.NewGuid(); response.CommunicationToken = communicationToken; response.ConnectionEstablished = true; CommunicationToken.Add(communicationToken); } Logger.Debug($"{(connected ? "Accepted" : "Denied")} connection request."); return(response); } }
public Guid?GetCommunicationToken() { return(CommunicationToken.Any() ? CommunicationToken.First() : default(Guid?)); }
private bool IsAuthorized(Guid?token) { return(token.HasValue && CommunicationToken.Contains(token.Value)); }
private void SetXmlElementValueForCommunicationToken(MessageTypes messageType, CommunicationToken communicationToken, XElement xElement) { if (communicationToken == null) { throw new CustomException(string.Format("CommunicationToken object is null")); } if (xElement == null) { throw new CustomException(string.Format("XElement object is null")); } var tokenKey = communicationToken.Key; var tokenValue = communicationToken.Value.ToFirstCharToUpper(); switch (messageType) { case MessageTypes.EmployerEnquiry: case MessageTypes.GlaEmployerEnquiry: ResolveEmployerEnquiryElementValues(tokenKey, tokenValue, xElement); break; case MessageTypes.WebAccessRequest: ResolveAccessRequestElementValues(tokenKey, tokenValue, xElement); break; default: throw new CustomException(string.Format("MessageTypes {0} resolver does not exist", messageType)); } }