예제 #1
0
        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);
            }
        }
예제 #2
0
        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);
            }
        }
예제 #3
0
 public Guid?GetCommunicationToken()
 {
     return(CommunicationToken.Any() ? CommunicationToken.First() : default(Guid?));
 }
예제 #4
0
 private bool IsAuthorized(Guid?token)
 {
     return(token.HasValue && CommunicationToken.Contains(token.Value));
 }
예제 #5
0
        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));
            }
        }