Пример #1
0
        /// <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>();
        }
Пример #2
0
        /// <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>();
        }
Пример #3
0
        /// <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>();
        }
Пример #4
0
 // -----< 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;
 }