상속: BogheCore.Sip.MyInviteSession
예제 #1
0
        public static MyAVSession TakeIncomingSession(MySipStack sipStack, CallSession session, twrap_media_type_t mediaType, SipMessage sipMessage)
        {
            MediaType media;

            lock (MyAVSession.sessions)
            {
                switch (mediaType)
                {
                case twrap_media_type_t.twrap_media_audio:
                    media = MediaType.Audio;
                    break;

                case twrap_media_type_t.twrap_media_video:
                    media = MediaType.Video;
                    break;

                case twrap_media_type_t.twrap_media_audiovideo:
                    media = MediaType.AudioVideo;
                    break;

                default:
                    return(null);
                }
                MyAVSession avSession = new MyAVSession(sipStack, session, media, InviteState.INCOMING);
                if (sipMessage != null)
                {
                    avSession.RemotePartyUri = sipMessage.getSipHeaderValue("f");
                }
                MyAVSession.sessions.Add(avSession.Id, avSession);
                return(avSession);
            }
        }
예제 #2
0
        public static MyAVSession CreateOutgoingSession(MySipStack sipStack, MediaType mediaType)
        {
            lock (MyAVSession.sessions)
            {
                MyAVSession avSession = new MyAVSession(sipStack, null, mediaType, InviteState.INPROGRESS);
                MyAVSession.sessions.Add(avSession.Id, avSession);

                return(avSession);
            }
        }
예제 #3
0
 public static void ReleaseSession(MyAVSession session)
 {
     lock (MyAVSession.sessions)
     {
         if (session != null && MyAVSession.sessions.ContainsKey(session.Id))
         {
             long id = session.Id;
             session.Dispose();
             MyAVSession.sessions.Remove(id);
         }
     }
 }
예제 #4
0
 public static void ReleaseSession(MyAVSession session)
 {
     if (session != null)
     {
         lock (MyMsrpSession.sessions)
         {
             long id = session.Id;
             session.Dispose();
             MyMsrpSession.sessions.Remove(id);
         }
     }
 }
예제 #5
0
        public static bool HandleMediaUpdate(long id, twrap_media_type_t newMediaType)
        {
            MyAVSession avSession = MyAVSession.GetSession(id);

            if (avSession != null)
            {
                if ((newMediaType & twrap_media_type_t.twrap_media_msrp) == twrap_media_type_t.twrap_media_msrp)
                {
                    return(false); // For now MSRP update is not suportted
                }
                avSession.mMediaType = MediaTypeUtils.ConvertFromNative(newMediaType);
                return(true);
            }

            return(false);
        }
예제 #6
0
        public static MyAVSession TakeOutgoingTranferSession(MySipStack sipStack, CallSession session, twrap_media_type_t mediaType, SipMessage sipMessage)
        {
            MediaType media = MediaTypeUtils.ConvertFromNative(mediaType);

            if (media == MediaType.None)
            {
                return(null);
            }

            MyAVSession avSession = MyAVSession.CreateOutgoingSession(sipStack, session, media);

            if (sipMessage != null)
            {
                avSession.RemotePartyUri = sipMessage.getSipHeaderValue("refer-to");
            }
            return(avSession);
        }
예제 #7
0
        public static MyAVSession TakeIncomingSession(MySipStack sipStack, CallSession session, twrap_media_type_t mediaType, SipMessage sipMessage)
        {
            MediaType media = MediaTypeUtils.ConvertFromNative(mediaType);

            if (media == MediaType.None)
            {
                return(null);
            }

            lock (MyAVSession.sessions)
            {
                MyAVSession avSession = new MyAVSession(sipStack, session, media, InviteState.INCOMING);
                if (sipMessage != null)
                {
                    avSession.RemotePartyUri = sipMessage.getSipHeaderValue("f");
                }
                MyAVSession.sessions.Add(avSession.Id, avSession);
                return(avSession);
            }
        }
예제 #8
0
 internal MyT140Callback(MyAVSession session)
     : base()
 {
     mSession = session;
 }
예제 #9
0
 public static MyAVSession CreateOutgoingSession(MySipStack sipStack, MediaType mediaType)
 {
     return(MyAVSession.CreateOutgoingSession(sipStack, null, mediaType));
 }
예제 #10
0
 internal MyT140Callback(MyAVSession session)
     : base()
 {
     mSession = session;
 }
예제 #11
0
 public static void ReleaseSession(MyAVSession session)
 {
     if (session != null)
     {
         lock (MyMsrpSession.sessions)
         {
             long id = session.Id;
             session.Dispose();
             MyMsrpSession.sessions.Remove(id);
         }
     }
 }
예제 #12
0
파일: MyAVSession.cs 프로젝트: xolile/boghe
        public static MyAVSession CreateOutgoingSession(MySipStack sipStack, MediaType mediaType)
        {
            lock (MyAVSession.sessions)
            {
                MyAVSession avSession = new MyAVSession(sipStack, null, mediaType, InviteState.INPROGRESS);
                MyAVSession.sessions.Add(avSession.Id, avSession);

                return avSession;
            }
        }
예제 #13
0
파일: MyAVSession.cs 프로젝트: xolile/boghe
        public static MyAVSession TakeIncomingSession(MySipStack sipStack, CallSession session, twrap_media_type_t mediaType, SipMessage sipMessage)
        {
            MediaType media;

            lock (MyAVSession.sessions)
            {
                switch (mediaType)
                {
                    case twrap_media_type_t.twrap_media_audio:
                        media = MediaType.Audio;
                        break;
                    case twrap_media_type_t.twrap_media_video:
                        media = MediaType.Video;
                        break;
                    case twrap_media_type_t.twrap_media_audiovideo:
                        media = MediaType.AudioVideo;
                        break;
                    default:
                        return null;
                }
                MyAVSession avSession = new MyAVSession(sipStack, session, media, InviteState.INCOMING);
                if (sipMessage != null)
                {
                    avSession.RemotePartyUri = sipMessage.getSipHeaderValue("f");
                }
                MyAVSession.sessions.Add(avSession.Id, avSession);
                return avSession;
            }
        }
예제 #14
0
파일: MyAVSession.cs 프로젝트: xolile/boghe
 public static void ReleaseSession(MyAVSession session)
 {
     lock (MyAVSession.sessions)
     {
         if (session != null && MyAVSession.sessions.ContainsKey(session.Id))
         {
             long id = session.Id;
             session.Dispose();
             MyAVSession.sessions.Remove(id);
         }
     }
 }
예제 #15
0
        public static MyAVSession TakeIncomingSession(MySipStack sipStack, CallSession session, twrap_media_type_t mediaType, SipMessage sipMessage)
        {
            MediaType media = MediaTypeUtils.ConvertFromNative(mediaType);
            if (media == MediaType.None)
            {
                return null;
            }

            lock (MyAVSession.sessions)
            {
                MyAVSession avSession = new MyAVSession(sipStack, session, media, InviteState.INCOMING);
                if (sipMessage != null)
                {
                    avSession.RemotePartyUri = sipMessage.getSipHeaderValue("f");
                }
                MyAVSession.sessions.Add(avSession.Id, avSession);
                return avSession;
            }
        }