package im.actor.core.modules.calls.peers; import im.actor.runtime.webrtc.WebRTCMediaStream; import im.actor.runtime.webrtc.WebRTCMediaTrack; import im.actor.runtime.webrtc.WebRTCPeerConnection; /** * Peer Node callback * HINT: PeerNodeCallback is not subclassed from PeerConnectionCallback because semantics of * onStreamAdded/onStreamRemoved is different. This methods are invoked only after * onConnectionStarted invoked. Also this interface contains deviceId in each method. */ public interface PeerNodeCallback { /** * Called when new offer arrived * * @param deviceId Device Id * @param sessionId Session Id * @param sdp sdp of the offer */ void onOffer(long deviceId, long sessionId, String sdp); /** * Called when new answer arrived * * @param deviceId Device Id * @param sessionId Session Id * @param sdp sdp of the answer */ void onAnswer(long deviceId, long sessionId, String sdp); /** * Called when negotiation finished successfully * * @param deviceId Device Id * @param sessionId Session Id */ void onNegotiationSuccessful(long deviceId, long sessionId); /** * Called when negotiation needed * * @param deviceId Device Id * @param sessionId Session Id */ void onNegotiationNeeded(long deviceId, long sessionId); /** * Called when candidate arrived * * @param deviceId Device Id * @param sessionId Session Id * @param mdpIndex index of candidate * @param id id of candidate * @param sdp sdp of the answer */ void onCandidate(long deviceId, long sessionId, int mdpIndex, String id, String sdp); /** * Called when peer state changed * * @param deviceId Device Id */ void onPeerStateChanged(long deviceId, PeerState state); /** * Called when track added * * @param deviceId Device Id * @param track added track */ void onTrackAdded(long deviceId, WebRTCMediaTrack track); /** * Called when track removed * * @param deviceId Device Id * @param track removed track */ void onTrackRemoved(long deviceId, WebRTCMediaTrack track); }