/**
         * When we get ConnectToMessage responses the connector tells us.
         */
        override public bool HandleCtmResponse(Connector c, ISender ret_path,
                                               ConnectToMessage ctm_resp)
        {
            base.HandleCtmResponse(c, ret_path, ctm_resp);

            /**
             * Check this guys neighbors:
             */
            //See if we want more:
            bool   got_enough = true;
            object des_o      = _connectors[c];

            if (des_o != null)
            {
                got_enough = (c.ReceivedCTMs.Count >= (int)des_o);
            }
            return(got_enough);
        }
Exemplo n.º 2
0
    /**
     * Connectors just send and receive ConnectToMessages.  They return all responses
     * to the ConnectionOverlord that initiated the ConnectToMessage
     * @return true if we have enough responses for this connector, and should
     * stop listening for more
     */
    virtual public bool HandleCtmResponse(Connector c, ISender return_path, ConnectToMessage resp) {
      /**
       * Time to start linking:
       */

      ICollection transports = resp.Target.Transports;

      if(TAAuth != null) {
        ArrayList trans = new ArrayList();
        foreach(TransportAddress ta in resp.Target.Transports) {
          if(TAAuth.Authorize(ta) != TAAuthorizer.Decision.Deny) {
            trans.Add(ta);
          }
        }
        transports = trans;
      }

      Linker l = new Linker(_node, resp.Target.Address, transports,
          resp.ConnectionType, resp.Token);
      l.FinishEvent += LinkerEndHandler;
      _node.TaskQueue.Enqueue( l );
      return true;
    }