/// <summary>Initialize repository and prepare it to work</summary> public RepositoryGUI() { InitializeComponent(); // prepare the console AllocConsole(); Console.Title = "Repository Server"; Console.Write("Repository Console View".Title()); txtPort1.Text = "8000"; txtPort2.Text = "8001"; // initialize files lists FileList = new List <string>(); ResultsList = new List <string>(); // initialize the sending queue sendingQueue = new BlockingQ <Message>(); // initialize and set up the receiver receiver = new Receiver(); receiver.SetFilesPath(".\\Repository\\Libraries"); receiver.SetResultsPath(".\\Repository\\Results"); btnCreateChannels.PerformClick(); LibSearchRepository(); ResSearchRepository(); mReceiver = new Thread(ReceiveMessages); mReceiver.Start(); sender = new Sender(); mSender = new Thread(SendMessages); mSender.Start(); ConnectedEnds = new Dictionary <string, string>(); ConnectedStreams = new Dictionary <string, string>(); BlockedMessages = new Dictionary <string, List <Message> >(); BlockedFiles = new Dictionary <string, List <FileTransferMessage> >(); xReader = new XMLReader(); ReceivedMessages = new List <Message>(); }
/// <summary>Initializes Test Harness</summary> void InitializeTH() { Console.Title = "Test Harness Server"; Console.Write("Test Harness - Console View".Title()); // Initialize queues TestRequests = new BlockingQ <Message>(); sendingQueue = new BlockingQ <Message>(); if (!Directory.Exists(".\\TestHarness\\Results")) { Directory.CreateDirectory(".\\TestHarness\\Results"); } receiver = new Receiver(); receiver.SetFilesPath(".\\TestHarness\\Temp_Libraries"); receiver.SetResultsPath(".\\TestHarness\\Results"); sender = new Sender(); sender.FilesPath = ".\\TestHarness\\Temp_Libraries"; sender.ResultsPath = ".\\TestHarness\\Results"; // Initialize communication and streaming hosts for (int i = 7000; i < 8000; i++) { try { receiver.CreateCommHost(new Uri("http://localhost:" + i + "/IComm/TestHarness")); break; } catch (Exception) { Console.Write("\n Failed to connect on port {0}", i); } } for (int i = 7000; i < 8000; i++) { try { receiver.CreateStreamHost(new Uri("http://localhost:" + i + "/IService/TestHarness")); break; } catch (Exception) { Console.Write("\n Failed to connect on port {0}", i); } } // Start the receiver thread mReceiver = new Thread(ReceiveMessages); mReceiver.Start(); // create sender channels that connect to the repository // this starts the sender thread if successful CreateSenderChannels(8000, 8001); mSender = new Thread(SendMessages); mSender.Start(); RunningThreads = new List <Thread>(); }
/// <summary>Sets up the client to work</summary> void InitializeClient() { string s = ClientName.Substring(0, 1).ToUpper() + ClientName.Substring(1); Title = s + " - Client Window"; txtAuthor.Text = ClientName; // start the console AllocConsole(); Console.Title = s + " Client Console"; Console.Write(("Client: " + s + " - Console View").Title()); // Initialize main fields sendingQueue = new BlockingQ <Message>(); FilesToDownload = new BlockingQ <FileTransferMessage>(); receiver = new Receiver(); receiver.SetFilesPath(".\\" + ClientName + "\\Libraries"); receiver.SetResultsPath(".\\" + ClientName + "\\Results"); sender = new Sender(); sender.FilesPath = ".\\" + ClientName + "\\Libraries"; sender.ResultsPath = ".\\" + ClientName + "\\Results"; // Initialize communication and streaming hosts for (int i = 9000; i < 10000; i++) { try { receiver.CreateCommHost(new Uri("http://localhost:" + i + "/IComm/Client")); receiver.CreateStreamHost(new Uri("http://localhost:" + i + "/IService/Client")); break; } catch (Exception) { Console.Write("\n Failed to connect on port {0}", i); Thread.Sleep(100); } } Console.Write("\n Client communication host: {0}\n Client streaming host: {1}" , receiver.CommAddress, receiver.StreamAddress); // Start the receiver thread mReceiver = new Thread(ReceiveMessages); mReceiver.Start(); // create sender channels that connect to the repository // this starts the sender thread if successful CreateSenderChannels(8000, 8001); mSender = new Thread(SendMessages); mSender.Start(); fDownloader = new Thread(DownloadFiles); fDownloader.Start(); ReceivedMessages = new List <Message>(); }
// -----< Receiver Constructors >----- /// <summary>Returns an instance of Receiver</summary> public Receiver() { /* * This check is important because whenever a sender creates * channel/proxy it will automatically try creating an instance * of the receiver. This way we can insure all senders send to * the same Queue */ if (Queue == null) { Queue = new BlockingQ <Message>(); } commHost = null; streamingHost = null; }