/// <summary>
        /// Creates a new connection for the given circuit. If a connection already exists for the user,
        /// an exception is thrown
        /// </summary>
        /// <param name="circuitData">Circuit data describing the inbound connection</param>
        /// <returns>A new connection object</returns>
        /// <exception cref="ConnectionAlreadyEstablishedException">If the user is already connected</exception>
        public AvatarConnection NewConnection(AgentCircuitData circuitData, EstablishedBy reason)
        {
            AvatarConnection conn;

            lock (_connectionsByUserId)
            {
                if (_connectionsByUserId.TryGetValue(circuitData.AgentID, out conn))
                {
                    throw new ConnectionAlreadyEstablishedException(String.Format("Connection for user {0} is already established", circuitData.AgentID), conn);
                }
                else
                {
                    conn = new AvatarConnection(circuitData, reason);
                    conn.OnConnectionTerminated += conn_OnConnectionTerminated;
                    _connectionsByUserId[circuitData.AgentID] = conn;
                }
            }

            ICapsControl capsControl = _capsModule.CreateCaps(circuitData.AgentID, circuitData.CapsPath);

            conn.SetCapsControl(capsControl);

            return(conn);
        }
Example #2
0
 public AvatarConnection(AgentCircuitData circuitData, EstablishedBy reason)
 {
     _circuitData       = circuitData;
     _state             = AvatarConnectionState.UDPCircuitWait;
     _establishedReason = reason;
 }
Example #3
0
 public AvatarConnection(AgentCircuitData circuitData, EstablishedBy reason)
 {
     _circuitData = circuitData;
     _state = AvatarConnectionState.UDPCircuitWait;
     _establishedReason = reason;
 }