Brunet.Node.ConnectionHandler C# (CSharp) Method

ConnectionHandler() public method

public ConnectionHandler ( object ct, EventArgs args ) : void
ct object
args System.EventArgs
return void
    public virtual void ConnectionHandler(object ct, EventArgs args)
    {
      ConnectionEventArgs ce_args = (ConnectionEventArgs) args;
      var con = ce_args.Connection;
      var edge = ce_args.ConnectionState.Edge;
      con.StateChangeEvent +=
        delegate(Connection c,
                 Pair<Brunet.Connections.ConnectionState,
                      Brunet.Connections.ConnectionState> oldnew) {
          //Need to check if we we have to change state:
          this.CheckForStateChange(null, null); 
        };
      edge.Subscribe(this, edge);
      //Our peer's remote is us
      var cs = ce_args.Connection.State;
      TransportAddress reported_ta = cs.PeerLinkMessage.Remote.FirstTA;
      //Our peer's local is them
      TransportAddress remote_ta = cs.PeerLinkMessage.Local.FirstTA;
      /*
       * Make a copy so that _remote_ta never changes while
       * someone is using it
       */
      var new_remote_ta = new List<TransportAddress>();
      foreach(EdgeListener el in _edgelistener_list) {
        //Update our local list:
        el.UpdateLocalTAs(edge, reported_ta);
        el.UpdateRemoteTAs( new_remote_ta, edge, remote_ta);
      }
      UpdateRemoteTAs(new_remote_ta);
    }