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);
        }
Example #3
0
 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());
     }
 }