/// <summary> /// Attempts to attach a UDP circuit to this connection. /// </summary> /// <param name="udpCircuit">The circuit to attach</param> /// <exception cref="" public void AttachUdpCircuit(IClientAPI udpCircuit) { if (_udpCircuit != null) { var ex = new AttachUdpCircuitException(String.Format("UDP circuit already exists for {0}. New code: {1}, Existing code: {2}", _circuitData.AgentID, _udpCircuit.CircuitCode, udpCircuit.CircuitCode)); ex.CircuitAlreadyExisted = true; if (udpCircuit.CircuitCode == _circuitData.CircuitCode && udpCircuit.SessionId == _circuitData.SessionID) { ex.ExistingCircuitMatched = true; } throw ex; } if (udpCircuit.CircuitCode != _circuitData.CircuitCode) { throw new AttachUdpCircuitException(String.Format("UDP circuit code doesnt match expected code for {0}. Expected: {1}, Actual {2}", _circuitData.AgentID, _circuitData.CircuitCode, udpCircuit.CircuitCode)); } if (udpCircuit.SessionId != _circuitData.SessionID) { throw new AttachUdpCircuitException(String.Format("UDP session ID doesnt match expected ID for {0}. Expected: {1}, Actual {2}", _circuitData.AgentID, _circuitData.SessionID, udpCircuit.SessionId)); } _udpCircuit = udpCircuit; _udpCircuit.OnConnectionClosed += _udpCircuit_OnConnectionClosed; _udpCircuit.OnSetThrottles += _udpCircuit_OnSetThrottles; _state = AvatarConnectionState.Established; }
public AvatarConnection(AgentCircuitData circuitData, EstablishedBy reason) { _circuitData = circuitData; _state = AvatarConnectionState.UDPCircuitWait; _establishedReason = reason; }