public void Start() { timer.Start(); IsRunning = true; // First we load the file LoadFile(); // Sending the request packet TransferRequestPacket trp = new TransferRequestPacket(SelectedFileStructure, LocalTransferID); NetComm.SendByteArray(trp.ToByteArray(), TargetEndPoint); // Update the state ProcessState = SendProcessState.SentTransferRequest; ProcessThread = new Thread(MainLoop); ProcessThread.Start(); }
private static void ProcessFileTransferRequest(IPEndPoint ep, TransferRequestPacket packet) { LocalFileStructure fStruct = packet.GetFileStructure(); if (fStruct == null) { // Send error return; } // Check that its ok //if(fStruct.FileSize > 500000000) // Refuse if over 500mb //{ // // Send transfer refusal // return; //} // set up int slot = GetAviableInboundTransferProcessID(); if (slot == -1) { // Send transfer refusal. No slots aviable return; } // Create a new inbound process ActiveInboundTransferProcesses[slot] = new InboundTransferProcess(packet.GetSenderTransferID(), fStruct, ep, _fileHandler); ActiveInboundTransferProcesses[slot].OnTransferFinished += InboundTransferFinished; // Send Transfer acceptal TransferAcceptPacket ta = new TransferAcceptPacket(slot, packet.GetSenderTransferID()); NetComm.SendByteArray(ta.ToByteArray(), ep); }