public void ReceiveData(byte[] encodedData, AClient client) { PPMessage message = new PPMessage(encodedData); if (message.ConnectionEstablished) { // If we receive a message for a job that doesn't exist. if (Jobs[message.ReceiverJobNumber] == null) { return; // TODO: Tell client to cancel its job. } // Otherwise give the job the data to be processed. Jobs[message.ReceiverJobNumber].ProcessMessage(message.Message, client); } else { // Create a new job depending on what type the client requests. PhilesJobType newJobType = (PhilesJobType)message.ReceiverJobNumber; int newJobNumber = Jobs.AddJob(newJobType); Jobs[newJobNumber].RemoteJobNumber = message.SenderJobNumber; // Send a blank response to client signaling its okay to start transmission. PPMessage serverResponse = new PPMessage(true, newJobNumber, message.SenderJobNumber); client.Send(serverResponse.GetEncodedData()); } }
public int AddJob(PhilesJobType jType, object[] param) { int jNumber = GetNextJobNumber(); PhilesJob nJob = null; if (jType == PhilesJobType.JOB_PHILES) { nJob = new PhilesJob(); } else if (jType == PhilesJobType.JOB_CLIENT_DIRECTORY_LISTING) { nJob = new ClientDirectoryRequestJob(param); } else if (jType == PhilesJobType.JOB_CLIENT_FILE_UPLOAD) { nJob = new ClientFileUploadJob(param); } else if (jType == PhilesJobType.JOB_CLIENT_PHILES) { nJob = new ClientPhilesJob(); } else if (jType == PhilesJobType.JOB_SERVER_DIRECTORY_LISTING) { nJob = new ServerDirectoryRequestJob(); } else if (jType == PhilesJobType.JOB_SERVER_FILE_UPLOAD) { nJob = new ServerFileUploadJob(); } nJob.OnJobComplete += new PhilesJob.JobCompleteDelegate(nJob_OnJobComplete); nJob.JobNumber = jNumber; Jobs.Add(jNumber, nJob); return(jNumber); }
public void BeginJob(PhilesJobType jobType, AClient client, object[] param) { if (jobType == PhilesJobType.JOB_CLIENT_PHILES) { int nJobCode = Jobs.AddJob(PhilesJobType.JOB_CLIENT_PHILES); PPMessage beginJobMessage = new PPMessage(false, nJobCode, (int)PhilesJobType.JOB_PHILES); client.Send(beginJobMessage.GetEncodedData()); } else if (jobType == PhilesJobType.JOB_CLIENT_DIRECTORY_LISTING) { int nJobCode = Jobs.AddJob(PhilesJobType.JOB_CLIENT_DIRECTORY_LISTING, param); PPMessage beginJobMessage = new PPMessage(false, nJobCode, (int)PhilesJobType.JOB_SERVER_DIRECTORY_LISTING); client.Send(beginJobMessage.GetEncodedData()); } else if (jobType == PhilesJobType.JOB_CLIENT_FILE_UPLOAD) { int nJobCode = Jobs.AddJob(PhilesJobType.JOB_CLIENT_FILE_UPLOAD, param); PPMessage beginJobMessage = new PPMessage(false, nJobCode, (int)PhilesJobType.JOB_SERVER_FILE_UPLOAD); client.Send(beginJobMessage.GetEncodedData()); } }