void NrIceCtx::initialized_cb(NR_SOCKET s, int h, void *arg) { NrIceCtx *ctx = static_cast<NrIceCtx *>(arg); ctx->EmitAllCandidates(); ctx->SetState(ICE_CTX_GATHERED); }
void NrIceCtx::trickle_cb(void *arg, nr_ice_ctx *ice_ctx, nr_ice_media_stream *stream, int component_id, nr_ice_candidate *candidate) { // Get the ICE ctx NrIceCtx *ctx = static_cast<NrIceCtx *>(arg); RefPtr<NrIceMediaStream> s = ctx->FindStream(stream); if (!s) { // This stream has been removed because it is inactive return; } // Format the candidate. char candidate_str[NR_ICE_MAX_ATTRIBUTE_SIZE]; int r = nr_ice_format_candidate_attribute(candidate, candidate_str, sizeof(candidate_str)); MOZ_ASSERT(!r); if (r) return; MOZ_MTLOG(ML_INFO, "NrIceCtx(" << ctx->name_ << "): trickling candidate " << candidate_str); s->SignalCandidate(s, candidate_str); }
void NrIceCtx::initialized_cb(NR_SOCKET s, int h, void *arg) { NrIceCtx *ctx = static_cast<NrIceCtx *>(arg); ctx->SetState(ICE_CTX_GATHERED); // Report that we are done gathering ctx->EmitAllCandidates(); }
int NrIceCtx::ice_completed(void *obj, nr_ice_peer_ctx *pctx) { MOZ_MTLOG(PR_LOG_DEBUG, "ice_completed called"); // Get the ICE ctx NrIceCtx *ctx = static_cast<NrIceCtx *>(obj); ctx->SetState(ICE_CTX_OPEN); return 0; }
int NrIceCtx::ice_checking(void *obj, nr_ice_peer_ctx *pctx) { MOZ_MTLOG(ML_DEBUG, "ice_checking called"); // Get the ICE ctx NrIceCtx *ctx = static_cast<NrIceCtx *>(obj); ctx->SetConnectionState(ICE_CTX_CHECKING); return 0; }
int NrIceCtx::ice_disconnected(void *obj, nr_ice_peer_ctx *pctx) { MOZ_MTLOG(ML_DEBUG, "ice_disconnected called"); // Get the ICE ctx NrIceCtx *ctx = static_cast<NrIceCtx *>(obj); ctx->SetConnectionState(ICE_CTX_DISCONNECTED); return 0; }
int NrIceCtx::ice_completed(void *obj, nr_ice_peer_ctx *pctx) { MOZ_MTLOG(ML_DEBUG, "ice_completed called"); // Get the ICE ctx NrIceCtx *ctx = static_cast<NrIceCtx *>(obj); // This is called even on failed contexts. if (ctx->connection_state() != ICE_CTX_FAILED) { ctx->SetConnectionState(ICE_CTX_OPEN); } return 0; }
int NrIceCtx::msg_recvd(void *obj, nr_ice_peer_ctx *pctx, nr_ice_media_stream *stream, int component_id, UCHAR *msg, int len) { // Get the ICE ctx NrIceCtx *ctx = static_cast<NrIceCtx *>(obj); RefPtr<NrIceMediaStream> s = ctx->FindStream(stream); // Streams which do not exist should never have packets. MOZ_ASSERT(s); s->SignalPacketReceived(s, component_id, msg, len); return 0; }
int NrIceCtx::stream_failed(void *obj, nr_ice_media_stream *stream) { MOZ_MTLOG(PR_LOG_DEBUG, "stream_failed called"); // Get the ICE ctx NrIceCtx *ctx = static_cast<NrIceCtx *>(obj); RefPtr<NrIceMediaStream> s = ctx->FindStream(stream); // Streams which do not exist should never fail. MOZ_ASSERT(s); ctx->SetState(ICE_CTX_FAILED); s -> SignalFailed(s); return 0; }
int NrIceCtx::stream_ready(void *obj, nr_ice_media_stream *stream) { MOZ_MTLOG(PR_LOG_DEBUG, "stream_ready called"); // Get the ICE ctx NrIceCtx *ctx = static_cast<NrIceCtx *>(obj); RefPtr<NrIceMediaStream> s = ctx->FindStream(stream); // Streams which do not exist should never be ready. MOZ_ASSERT(s); s->Ready(); return 0; }
void NrIceCtx::trickle_cb(void *arg, nr_ice_ctx *ice_ctx, nr_ice_media_stream *stream, int component_id, nr_ice_candidate *candidate) { // Get the ICE ctx NrIceCtx *ctx = static_cast<NrIceCtx *>(arg); RefPtr<NrIceMediaStream> s = ctx->FindStream(stream); // Streams which do not exist shouldn't have candidates. MOZ_ASSERT(s); // Format the candidate. char candidate_str[NR_ICE_MAX_ATTRIBUTE_SIZE]; int r = nr_ice_format_candidate_attribute(candidate, candidate_str, sizeof(candidate_str)); MOZ_ASSERT(!r); if (r) return; MOZ_MTLOG(ML_INFO, "NrIceCtx(" << ctx->name_ << "): trickling candidate " << candidate_str); s->SignalCandidate(s, candidate_str); }
void NrIceCtx::gather_cb(NR_SOCKET s, int h, void *arg) { NrIceCtx *ctx = static_cast<NrIceCtx *>(arg); ctx->SetGatheringState(ICE_CTX_GATHER_COMPLETE); }