Пример #1
0
        private void SendAnnouncementBlockWanted(BinaryNumber fileID, int blockNumber)
        {
            byte[] packetData = BitChatMessage.CreateFileBlockWanted(fileID, blockNumber);

            //announce to all peers
            _peersLock.EnterReadLock();
            try
            {
                foreach (BitChatNetwork.VirtualPeer.VirtualSession peer in _peers)
                {
                    peer.WriteMessage(packetData, 0, packetData.Length);
                }
            }
            finally
            {
                _peersLock.ExitReadLock();
            }

            //announce to all seeds
            _seedersLock.EnterReadLock();
            try
            {
                foreach (BitChatNetwork.VirtualPeer.VirtualSession seeder in _seeders)
                {
                    seeder.WriteMessage(packetData, 0, packetData.Length);
                }
            }
            finally
            {
                _seedersLock.ExitReadLock();
            }
        }
Пример #2
0
        private void AnnounceBlockWanted(int blockNumber)
        {
            byte[] packetData = BitChatMessage.CreateFileBlockWanted(new FileBlockWanted(_metaData.FileID, blockNumber));

            //announce to all peers
            lock (_peers)
            {
                foreach (BitChat.Peer peer in _peers)
                {
                    peer.WritePacket(packetData, 0, packetData.Length);
                }
            }

            //announce to all seeds
            lock (_seeders)
            {
                foreach (BitChat.Peer seeder in _seeders)
                {
                    seeder.WritePacket(packetData, 0, packetData.Length);
                }
            }
        }