コード例 #1
0
        async void HandleRings(RingCommand ringCommand, IConnection connection)
        {

            await @lock.ReaderLockAsync();

            try
            {

                if (this.closed)
                    return;

                User user = GetUserInner(ringCommand.Caller);

                user.UpdateNicknameFromIM(ringCommand.CallerNickname);

                SocketEndPoint endPoint = SocketEndPoint.Parse(ringCommand.Endpoint);

                IMSessionInvitation invite = new IMSessionInvitation(user, endPoint, ringCommand.SessionId, ringCommand.AuthString);

                OnInvitedToIMSession(new InvitationEventArgs(invite));

            }
            finally
            {
                @lock.ReaderRelease();
            }


        }
コード例 #2
0
ファイル: EventArgs.cs プロジェクト: kwerty/Messenger-Library
 internal InvitationEventArgs(IMSessionInvitation invitation)
 {
     Invitation = invitation;
 }
コード例 #3
0
        public async Task<IMSession> AcceptInvitationAsync(IMSessionInvitation invitation)
        {

            await @lock.ReaderLockAsync();

            try
            {

  
                if (closed)
                    throw new ObjectDisposedException(GetType().Name);

                if (!IsLoggedIn)
                    throw new NotLoggedInException();

                if (Interlocked.Exchange(ref invitation.accepted, 1) == 1)
                    throw new InvalidOperationException("Invitation already accepted.");

                IMSession imSession = new IMSession(this);

                await imSession.ConnectByInvitation(invitation);

                IMSessions.AddIMSessionInner(imSession);

                OnIMSessionCreated(new IMSessionEventArgs(imSession, invitation));

                return imSession;


            }

            finally
            {
                @lock.ReaderRelease();
            }

        }
コード例 #4
0
ファイル: EventArgs.cs プロジェクト: kwerty/Messenger-Library
 internal IMSessionEventArgs(IMSession imSession, IMSessionInvitation invitation)
 {
     IMSession = imSession;
     Invitation = invitation;
 }