Esempio n. 1
0
        public static bool ManageProfileImage(
            ProfileImage image,
            MessagingCallback callback,
            object state)
        {
            bool   flag = !string.IsNullOrEmpty(image.TypeName);
            string strProfileImageUrl = null;

            if (flag)
            {
                strProfileImageUrl = CreateOperationUri(image.TypeName);
                flag = strProfileImageUrl != null;
            }
            if (flag)
            {
                flag = image.Image == null ? image.ResourceId != null && MessagingService.Instance.ManageProfileImage(strProfileImageUrl, image.ResourceId, callback, state) : MessagingService.Instance.ManageProfileImage(strProfileImageUrl, image.Image, callback, state);
            }
            if (flag)
            {
                if (image.Type == ProfileImageType.Background)
                {
                    SQMLog.Log(SQMDataId.SocialEditBackground, 1);
                }
                else if (image.Type == ProfileImageType.Tile)
                {
                    SQMLog.Log(SQMDataId.SocialEditTile, 1);
                }
            }
            return(flag);
        }
        private void SendMessage(PeerId id, PeerMessage message, MessagingCallback callback)
        {
            try
            {
                id.MessageSentCallback     = callback;
                id.CurrentlySendingMessage = message;

                RateLimiterGroup limiter = id.TorrentManager.UploadLimiter;

                if (message is PieceMessage)
                {
                    PeerIO.EnqueueSendMessage(id.Connection, id.Encryptor, message, limiter, id.Monitor, id.TorrentManager.Monitor, endSendMessageCallback, id);
                    ClientEngine.BufferManager.FreeBuffer(ref ((PieceMessage)message).Data);
                    id.IsRequestingPiecesCount--;
                }
                else
                {
                    PeerIO.EnqueueSendMessage(id.Connection, id.Encryptor, message, null, id.Monitor, id.TorrentManager.Monitor, endSendMessageCallback, id);
                }
            }
            catch (Exception ex)
            {
                CleanupSocket(id, ex.Message);
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="settings"></param>
        public ConnectionManager(ClientEngine engine)
        {
            this.engine = engine;

            this.endCheckEncryptionCallback         = ClientEngine.MainLoop.Wrap(EndCheckEncryption);
            this.endSendMessageCallback             = (a, b, c) => ClientEngine.MainLoop.Queue(() => EndSendMessage(a, b, c));
            this.endCreateConnectionCallback        = (a, b, c) => ClientEngine.MainLoop.Queue(() => EndCreateConnection(a, b, c));
            this.incomingConnectionAcceptedCallback = (a, b, c) => ClientEngine.MainLoop.Queue(() => IncomingConnectionAccepted(a, b, c));

            this.handshakeSentCallback         = PeerHandshakeSent;
            this.peerHandshakeReceivedCallback = (a, b, c) => ClientEngine.MainLoop.Queue(() => PeerHandshakeReceived(a, b, c));
            this.messageSentCallback           = PeerMessageSent;
            this.messageReceivedCallback       = (a, b, c) => ClientEngine.MainLoop.Queue(() => MessageReceived(a, b, c));

            this.pendingConnects = new List <AsyncConnectState>();
        }
Esempio n. 4
0
        public ConnectionManager(ClientEngine engine)
        {
            _engine = engine;

            _endCheckEncryptionCallback = ClientEngine.MainLoop.Wrap(EndCheckEncryption);
            _endSendMessageCallback = (a, b, c) => ClientEngine.MainLoop.Queue(() => EndSendMessage(a, b, c));
            _endCreateConnectionCallback = (a, b, c) => ClientEngine.MainLoop.Queue(() => EndCreateConnection(a, b, c));
            IncomingConnectionAcceptedCallback =
                (a, b, c) => ClientEngine.MainLoop.Queue(() => IncomingConnectionAccepted(a, b, c));

            _handshakeSentCallback = PeerHandshakeSent;
            _peerHandshakeReceivedCallback =
                (a, b, c) => ClientEngine.MainLoop.Queue(() => PeerHandshakeReceived(a, b, c));
            _messageSentCallback = PeerMessageSent;
            MessageReceivedCallback = (a, b, c) => ClientEngine.MainLoop.Queue(() => MessageReceived(a, b, c));

            _pendingConnects = new List<AsyncConnectState>();
        }
Esempio n. 5
0
        public static bool ManageProfile(
            string fieldName,
            string fieldValue,
            MessagingCallback callback,
            object state)
        {
            bool   flag          = !string.IsNullOrEmpty(fieldName);
            string strProfileUrl = null;

            if (flag)
            {
                strProfileUrl = CreateOperationUri(fieldName);
                flag          = strProfileUrl != null;
            }
            if (flag)
            {
                flag = MessagingService.Instance.ManageProfile(strProfileUrl, fieldValue, callback, state);
            }
            return(flag);
        }
        private void SendMessage(PeerId id, PeerMessage message, MessagingCallback callback)
        {
            try
            {
                id.MessageSentCallback = callback;
                id.CurrentlySendingMessage = message;

                RateLimiterGroup limiter = id.TorrentManager.UploadLimiter;

                if (message is PieceMessage)
                {
                    PeerIO.EnqueueSendMessage (id.Connection, id.Encryptor, message, limiter, id.Monitor, id.TorrentManager.Monitor, endSendMessageCallback, id);
                    ClientEngine.BufferManager.FreeBuffer(ref ((PieceMessage)message).Data);
                    id.IsRequestingPiecesCount--;
                }
                else
                    PeerIO.EnqueueSendMessage (id.Connection, id.Encryptor, message, null, id.Monitor, id.TorrentManager.Monitor, endSendMessageCallback, id);
            }
            catch (Exception ex)
            {
                CleanupSocket(id, ex.Message);
            }
        }
Esempio n. 7
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="settings"></param>
        public ConnectionManager(ClientEngine engine)
        {
            this.engine = engine;

            this.endCheckEncryptionCallback = delegate(IAsyncResult result) { ClientEngine.MainLoop.Queue(delegate { EndCheckEncryption(result); }); };
            this.endSendMessageCallback = delegate(bool s, int c, object o) { ClientEngine.MainLoop.Queue(delegate { EndSendMessage(s, c, o); }); };
            this.endCreateConnectionCallback = delegate(bool succeeded, object state) { ClientEngine.MainLoop.Queue(delegate { EndCreateConnection(succeeded, state); }); };
            this.incomingConnectionAcceptedCallback = delegate(bool s, int c, object o) { ClientEngine.MainLoop.Queue(delegate { IncomingConnectionAccepted(s, c, o); }); };

            this.bitfieldSentCallback = new MessagingCallback(PeerBitfieldSent);
            this.handshakeSentCallback = new MessagingCallback(this.PeerHandshakeSent);
            this.handshakeReceievedCallback = delegate(bool s, int c, object o) { ClientEngine.MainLoop.Queue(delegate { PeerHandshakeReceived(s, c, o); }); };
            this.messageSentCallback = new MessagingCallback(this.PeerMessageSent);

            this.torrents = new MonoTorrentCollection<TorrentManager>();
        }
Esempio n. 8
0
        private void SendMessage(PeerId id, PeerMessage message, MessagingCallback callback)
        {
            bool cleanup = false;

            try
            {
                if (id.Connection == null)
                    return;
                ClientEngine.BufferManager.FreeBuffer(ref id.sendBuffer);
                ClientEngine.BufferManager.GetBuffer(ref id.sendBuffer, message.ByteLength);
                id.MessageSentCallback = callback;
                id.CurrentlySendingMessage = message;
                if (message is PieceMessage)
                    id.IsRequestingPiecesCount--;

                id.BytesSent = 0;
                id.BytesToSend = message.Encode(id.sendBuffer, 0);
                id.Encryptor.Encrypt(id.sendBuffer.Array, id.sendBuffer.Offset, id.BytesToSend);

                RateLimiter limiter = engine.Settings.GlobalMaxUploadSpeed > 0 ? engine.uploadLimiter : null;
                limiter = limiter ?? (id.TorrentManager.Settings.MaxUploadSpeed > 0 ? id.TorrentManager.uploadLimiter : null);
                NetworkIO.EnqueueSend(id.Connection, id.sendBuffer, id.BytesSent, id.BytesToSend, endSendMessageCallback, id, limiter, id.TorrentManager.Monitor, id.Monitor);
            }
            catch (Exception)
            {
                Logger.Log(id.Connection, "ConnectionManager - Socket error sending message");
                cleanup = true;
            }
            finally
            {
                if (cleanup)
                    CleanupSocket(id, "Couldn't SendMessage");
            }
        }