public Call bridge(Call call) { if (call == this) { return(this); } lock (locker) { if (State.In(pjsip_inv_state.PJSIP_INV_STATE_NULL, pjsip_inv_state.PJSIP_INV_STATE_DISCONNECTED)) { return(this); } if (call.State.In(pjsip_inv_state.PJSIP_INV_STATE_NULL, pjsip_inv_state.PJSIP_INV_STATE_DISCONNECTED)) { return(this); } if (!BridgedCalls.ContainsKey(call.ID)) { BridgedCalls.Add(call.ID, call); } if (!call.BridgedCalls.ContainsKey(ID)) { call.BridgedCalls.Add(ID, this); } var call1 = getAudioMedia(); var call2 = call.getAudioMedia(); if (call1 == null || call2 == null) { return(this); } call.CallStateChange += Call_BridgedCallDisconnected; CallStateChange += Call_BridgedCallDisconnected; call1.startTransmit(call2); call2.startTransmit(call1); return(this); } }