/// <summary> /// Function to receive upload message /// </summary> /// <param name="uploadMessage">The message to be received</param> private void ReceivedUpload(UploadMessage uploadMessage) { if (uploadMessage.type.Equals(TypeCode.REQUEST)) { int replyPort = uploadMessage.port; string uuid = uploadMessage.fromUuid; if (DiskHelper.GetTotalAvailableSpace(@"C:\") > uploadMessage.filesize) { uploadMessage.statusCode = StatusCode.ACCEPTED; Console.WriteLine(@"Request accepted"); } else { Console.WriteLine(@"Not enough space"); uploadMessage.statusCode = StatusCode.INSUFFICIENT_STORAGE; } uploadMessage.CreateReply(); uploadMessage.port = _ports.GetAvailablePort(); _fileReceiver = new FileReceiver(this._path + @".hidden\" + uuid + @"\" + uploadMessage.fullFilename + @"\", uploadMessage.chunkHash, uploadMessage.port); _fileReceiver.Start(); uploadMessage.Send(replyPort); } _ports.Release(uploadMessage.port); }
public void StartFileReceiver() { while (!shutdownEvent.WaitOne(0)) { FileReceiver.Start(); } }
private void AcceptCB(IAsyncResult ar) { Socket socket = listensocket.EndAccept(ar); FileReceiver task = new FileReceiver(); task.Socket = socket; task.EnabledIOBuffer = true; task.BlockFinished += new BlockFinishedEventHandler(task_BlockFinished); task.ConnectLost += new EventHandler(task_ConnectLost); task.AllFinished += new EventHandler(task_AllFinished); task.BlockHashed += new BlockFinishedEventHandler(task_BlockHashed); task.ErrorOccurred += new FileTransmissionErrorOccurEventHandler(task_ErrorOccurred); //task.FilePath = @"A:"; task.Start(); listensocket.BeginAccept(AcceptCB, null); }
private void Form1_Load(object sender, EventArgs e) { IPEndPoint ep = new IPEndPoint(IPAddress.Parse("192.168.1.2"), 3477); Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); socket.Connect(ep); FileReceiver task = new FileReceiver(); task.Socket = socket; task.EnabledIOBuffer = true; task.BlockFinished += new BlockFinishedEventHandler(task_BlockFinished); task.ConnectLost += new EventHandler(task_ConnectLost); task.AllFinished += new EventHandler(task_AllFinished); task.BlockHashed += new BlockFinishedEventHandler(task_BlockHashed); task.ErrorOccurred += new FileTransmissionErrorOccurEventHandler(task_ErrorOccurred); //task.FilePath = @"A:"; task.Start(); }
private static void Main(string[] args) { var nodeId = int.Parse(args[0]); Console.Title = nodeId.ToString(); var dataNodeStoragePath = $"{Resources.StoragePath}DataNode_{nodeId}"; if (!Directory.Exists(dataNodeStoragePath)) { Directory.CreateDirectory(dataNodeStoragePath); } var info = new DataNodeInfo { Id = nodeId, TcpPort = 44400 + nodeId, StorageDirectory = new DirectoryInfo(dataNodeStoragePath) }; var tokenSource = new CancellationTokenSource(); var udpConnection = UdpUser.ConnectTo(Resources.MasterMulticastIp, Resources.MasterMulticastPort); var hearbeatsSender = new HeartbeatsSender(udpConnection, info, tokenSource.Token); hearbeatsSender.Start(); var udpMessageReceiver = new MessageReceiver(udpConnection, info, tokenSource.Token); udpMessageReceiver.Start(); var fileReceiver = new FileReceiver(info, tokenSource.Token); fileReceiver.Start(); Console.WriteLine("press any key to close this data node"); Console.ReadLine(); tokenSource.Cancel(); udpConnection.Close(); }