/** * 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); }
/** * 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; }