public MyOwnDiscoveryProtocolHandlers(AbstractSession mySession)
     : base(mySession)
 {
 }
 public MyOwnClientCoreHandlers(AbstractSession mySession)
     : base(mySession)
 {
 }
 public MyOwnStoreProtocolHandlers(AbstractSession mySession)
     : base(mySession)
 {
 }
Beispiel #4
0
        private bool Authorize(
            Service authService,
            Identity identity,
            AbstractSession session,
            CorrelationID cid)
        {
            lock (d_authorizationStatus)
            {
                d_authorizationStatus[cid] = AuthorizationStatus.WAITING;
            }
            EventQueue tokenEventQueue = new EventQueue();

            try
            {
                session.GenerateToken(new CorrelationID(tokenEventQueue), tokenEventQueue);
            }
            catch (Exception e)
            {
                System.Console.WriteLine(e.Message);
                return(false);
            }
            String    token = null;
            const int timeoutMilliSeconds = 10000;
            Event     eventObj            = tokenEventQueue.NextEvent(timeoutMilliSeconds);

            if (eventObj.Type == Event.EventType.TOKEN_STATUS ||
                eventObj.Type == Event.EventType.REQUEST_STATUS)
            {
                foreach (Message msg in eventObj)
                {
                    System.Console.WriteLine(msg.ToString());
                    if (msg.MessageType == TOKEN_SUCCESS)
                    {
                        token = msg.GetElementAsString("token");
                    }
                }
            }
            if (token == null)
            {
                System.Console.WriteLine("Failed to get token");
                return(false);
            }

            Request authRequest = authService.CreateAuthorizationRequest();

            authRequest.Set("token", token);

            lock (d_authorizationStatus)
            {
                session.SendAuthorizationRequest(authRequest, identity, cid);

                long      startTime = System.DateTime.Now.Ticks;
                const int WAIT_TIME = 10 * 1000;                 // 10 seconds
                while (true)
                {
                    Monitor.Wait(d_authorizationStatus, WAIT_TIME);
                    if (d_authorizationStatus[cid] != AuthorizationStatus.WAITING)
                    {
                        return(d_authorizationStatus[cid] == AuthorizationStatus.AUTHORIZED);
                    }
                    if (System.DateTime.Now.Ticks - startTime > WAIT_TIME * 10000)
                    {
                        return(false);
                    }
                }
            }
        }