Exemple #1
0
        /// <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);
        }
Exemple #2
0
 public void StartFileReceiver()
 {
     while (!shutdownEvent.WaitOne(0))
     {
         FileReceiver.Start();
     }
 }
Exemple #3
0
        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);
        }
Exemple #4
0
        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();
        }
Exemple #5
0
        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();
        }