/// <summary> /// Tries to attach the given UDP circuit to the AvatarConnection /// </summary> /// <param name="udpCircuit"></param> /// <returns></returns> public void TryAttachUdpCircuit(IClientAPI udpCircuit) { lock (_connectionsByUserId) { AvatarConnection conn; if (_connectionsByUserId.TryGetValue(udpCircuit.AgentId, out conn)) { conn.AttachUdpCircuit(udpCircuit); udpCircuit.AfterAttachedToConnection(conn.CircuitData); if (udpCircuit.RemoteEndPoint.Port != 0) { _connectionsByEndpoint[udpCircuit.RemoteEndPoint] = conn; } } else { throw new AttachUdpCircuitException(String.Format("Could not attach UDP ciruit for user {0}. User has no managed connections", udpCircuit.AgentId)); } } }