public static void EnqueueSendMessage (IConnection connection, IEncryption encryptor, PeerMessage message, IRateLimiter rateLimiter, ConnectionMonitor peerMonitor, ConnectionMonitor managerMonitor, AsyncIOCallback callback, object state) { int count = message.ByteLength; var buffer = ClientEngine.BufferManager.GetBuffer (count); message.Encode (buffer, 0); encryptor.Encrypt (buffer, 0, count); var data = sendCache.Dequeue ().Initialise (buffer, callback, state); NetworkIO.EnqueueSend (connection, buffer, 0, count, rateLimiter, peerMonitor, managerMonitor, EndSendCallback, data); }
private void SendMessage(PeerMessage message, CustomConnection connection) { byte[] b = message.Encode(); encryptor.Encrypt(b); IAsyncResult result = connection.BeginSend(b, 0, b.Length, null, null); if (!result.AsyncWaitHandle.WaitOne(5000, true)) throw new Exception("Message didn't send correctly"); connection.EndSend(result); }
void SendMessage(PeerMessage message, CustomConnection connection) { byte[] b = message.Encode(); encryptor.Encrypt(b); Send (connection, b, 0, b.Length); }
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"); } }