예제 #1
0
        public void StartRequest(int ttl)
        {
            var places = utilities.Factory.getIpsAndPorts();
            foreach (var keyValuePair in places)
            {
                var requestModel = utilities.Factory.ParseRequest("/searchfile?name=" + textBox1.Text.Trim() + "&sendip=" + utilities.Factory.LocalIPAddress() + "&sendport=" + utilities.Factory.LocalPort() + "&ttl=" + ttl + "&id=wqeqwe23&noask=" + utilities.Factory.LocalIPAddress());
                var request = new GetRequestHandler(requestModel, keyValuePair.Key.ToString(), keyValuePair.Value.ToString());
                Thread worker = new Thread(request.doRequest);
                worker.IsBackground = true;
                worker.SetApartmentState(System.Threading.ApartmentState.STA);
                worker.Name = "STARTERParseRequestsAndSendRequestsTTL";
                worker.Start();

            }
        }
예제 #2
0
        public static void filterAndDistributeQuery(string data)
        {
            var startParsing = ParseRequest(FilterQuery.getMainParamaterFromGetRequest(data));
            var ttl = Int32.Parse(startParsing.TimeToLive) - 1;
            var foundFiles = FindFile(startParsing.Name);
            var fileList = new List<FileModel>();
            if (foundFiles.Any() && ttl > 0)
            {
                foreach (var file in foundFiles)
                {
                    fileList.Add(new FileModel { Ip = LocalIPAddress(), Port = LocalPort(), Name = file });
                }
                var json = JsonConvert.SerializeObject(new PostObject { Id = String.Empty, Files = fileList });
                var postreq = new PostRequestHandler(json, startParsing.Sendip, startParsing.Sendport);
                Thread worker = new Thread(postreq.postRequest);
                worker.IsBackground = true;
                worker.SetApartmentState(System.Threading.ApartmentState.STA);
                worker.Name = "PostRequestThreadHE";
                worker.Priority = ThreadPriority.Highest;
                worker.Start();

            }
            if (ttl > 0)
            {
                var places = getIpsAndPorts();
                foreach (var keyValuePair in places)
                {
                    if (!startParsing.Noask.Contains(keyValuePair.Key.ToString()))
                    {

                        var requestModel = startParsing;
                        requestModel.TimeToLive = ttl.ToString();
                        requestModel.Noask.Add(LocalIPAddress());
                        var request = new GetRequestHandler(requestModel, keyValuePair.Key.ToString(),
                                                            keyValuePair.Value.ToString());
                        Thread worker = new Thread(request.doRequest);
                        worker.IsBackground = true;
                        worker.SetApartmentState(System.Threading.ApartmentState.STA);
                        worker.Name = "ParseRequestsAndSendRequestsTTL";
                        worker.Start();
                    }

                }
            }
        }