/// <summary>
        /// Receives the offer anwer.
        /// </summary>
        /// <returns>The offer anwer.</returns>
        /// <param name="sdp">Sdp.</param>
        /// <param name="isOffer">Is offer.</param>
        /// <param name="caller">Caller.</param>
        public void ReceiveOfferAnwer(string sdp, bool isOffer, string peerId)
        {
            OfferAnswer offer = new OfferAnswer();

            offer.SdpMessage = sdp;
            offer.IsOffer    = isOffer;
            conference.ReceiveOfferAnswer(offer, peerId);
        }
예제 #2
0
        private void ReceiveOfferAnswerOrCandidate(NotifyReceiveArgs e)
        {
            var peerId    = e.NotifyingClient.ClientId.ToString();
            var peerState = e.NotifyingClient.BoundRecords;

            if (e.Tag == "offeranswer:" + SessionId)
            {
                Conference.ReceiveOfferAnswer(OfferAnswer.FromJson(e.DataJson), peerId, peerState);
            }
            else if (e.Tag == "candidate:" + SessionId)
            {
                Conference.ReceiveCandidate(Candidate.FromJson(e.DataJson), peerId);
            }
        }
예제 #3
0
        /// <summary>
        /// Recipient accepted call
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void Xmpp_OnReceiveSessionAccept(object sender, Messaging.Jingle.JingleSdpEventArgs e)
        {
            Messaging.Log.Debug("OnReceiveSessionAccept > Conference.ReceiveOfferAnswer " + e.From);

            OfferAnswer oa = new OfferAnswer();

            oa.SdpMessage = e.Sdp;
            oa.IsOffer    = false;

            Messaging.Log.Info("Peer ID: " + e.From);
            Messaging.Log.Info("SA SDP in:  " + e.Sdp);


            if (Conference == null)
            {
                Conference = ActivityService.GetInstance.App.GetConference();
            }
            // send candidates to Icelink to negotiate connection
            Conference.ReceiveOfferAnswer(oa, e.From);
        }
예제 #4
0
        /// <summary>
        /// Answer incoming call
        /// </summary>
        /// <param name="conference"></param>
        /// <param name="to"></param>
        /// <param name="sdp"></param>
        /// <param name="callback"></param>
        public void Answer(FM.IceLink.Conference conference, string to, string sdp, Action <string> callback)
        {
            To = to;
            // Console.WriteLine ("Answer callback");
            Conference = conference;

            Conference.OnLinkOfferAnswer       += SendSessionAccept;
            Conference.OnLinkCandidate         += SendCandidate;
            Conference.OnUnhandledException    += Conference_OnUnhandledException;
            Conference.OnLinkRemoteOfferAnswer += LinkRemoteOfferAnswer;

            OfferAnswer oa = new OfferAnswer();

            oa.SdpMessage = sdp;
            oa.IsOffer    = true;

            Messaging.Log.Info("Peer ID: " + to);
            Messaging.Log.Info("SI SDP in:\n" + sdp);

            Messaging.Log.Debug("Answer > Conference.ReceiveOfferAnswer");
            // send to Icelink to generate candidates
            Conference.ReceiveOfferAnswer(oa, to);
        }