Esempio n. 1
0
        /// <summary>
        /// This method is invoked to request the filelist from the peer
        /// </summary>
        /// <returns>The peer file list</returns>
        private IDictionary<int, string> GetFileList()
        {
            AMessageData messageData = new FileListGetMessageData(new Dictionary<int, string>());
            Message fileListGetMessage = new Message(new MessageHeader(ServiceTypes.FILE_LIST_GET), messageData);
            byte[] buffer = fileListGetMessage.Serialize();
            receiverStream.Write(buffer, 0, buffer.Length);

            byte[] headerBuffer = new byte[MessageHeader.HEADER_SIZE];
            int readBytes = receiverStream.Read(headerBuffer, 0, MessageHeader.HEADER_SIZE);
            if (readBytes < MessageHeader.HEADER_SIZE)
            {
            #warning must test this part!!!!!!!!
                receiverStream.Flush();
                return new Dictionary<int,string>();
            }
            ushort contentLength = AMessageData.ToShort(headerBuffer[MessageHeader.HEADER_SIZE - 2], headerBuffer[MessageHeader.HEADER_SIZE-1]);
            byte[] rawDataBuffer = new byte[headerBuffer.Length + contentLength];
            Array.Copy(headerBuffer, 0, rawDataBuffer, 0, headerBuffer.Length);
            readBytes = receiverStream.Read(rawDataBuffer, headerBuffer.Length, contentLength);
            if (readBytes != contentLength)
            {
            #warning must test this part!!!!!!!!
                receiverStream.Flush();
                return new Dictionary<int, string>();
            }
            Message receivedMessage = new Message(rawDataBuffer);
            if (receivedMessage.Header.ServiceType != ServiceTypes.FILE_LIST_GET)
            {
                return new Dictionary<int, string>();
            }
            FileListGetMessageData fileListMessageData = (FileListGetMessageData)Message.GetMessageData(receivedMessage);
            return fileListMessageData.FileList;
        }
Esempio n. 2
0
 /// <summary>
 /// Creates a file list packet and sends it to the peer
 /// </summary>
 private void SendFileList()
 {
     AMessageData messageData = new FileListGetMessageData(_fileList);
     Message fileListMessage = new Message(new MessageHeader(ServiceTypes.FILE_LIST_GET), messageData);
     byte[] buffer = fileListMessage.Serialize();
     client.GetStream().Write(buffer, 0, buffer.Length);
 }
Esempio n. 3
0
 private void RequestedFileList(IDictionary<int, string> fileList, Socket contactSocket)
 {
     FileListGetMessageData messageData = new FileListGetMessageData(fileList);
     Message newMessage = new Message(new MessageHeader(ServiceTypes.FILE_LIST_GET), messageData);
     contactSocket.Send(newMessage.Serialize());
     PeerClientData data = _connectedClients[contactSocket];
     data.FileId = -1;
     _connectedClients.Remove(contactSocket);
     data.Socket.Close();
 }