コード例 #1
0
        public void BeginGetIncludeInfoTest()
        {
            IHaosouIncludeInfo info1 = null, info2 = null, info3 = null;

            using (CountdownEvent ce = new CountdownEvent(3)) {
                HaosouUtility.BeginGetIncludeInfo("www.beianm.com", (ar) => {
                    try {
                        info1 = HaosouUtility.EndGetIncludeInfo(ar);
                    } finally {
                        ce.Signal();
                    }
                }, null);
                HaosouUtility.BeginGetIncludeInfo("www.xphter.com", (ar) => {
                    try {
                        info2 = HaosouUtility.EndGetIncludeInfo(ar);
                    } finally {
                        ce.Signal();
                    }
                }, null);
                HaosouUtility.BeginGetIncludeInfo("news.qq.com", (ar) => {
                    try {
                        info3 = HaosouUtility.EndGetIncludeInfo(ar);
                    } finally {
                        ce.Signal();
                    }
                }, null);
                ce.Wait();
            }

            Assert.IsTrue(info1.IncludeCount > 0);
            Assert.IsTrue(info2.IncludeCount > 0);
            Assert.IsTrue(info3.IncludeCount > 0);
        }
コード例 #2
0
        /// <summary>
        /// Starts an asynchronous operation to get include info.
        /// </summary>
        /// <param name="domainName"></param>
        /// <param name="callback"></param>
        /// <param name="userState"></param>
        /// <returns></returns>
        public static IAsyncResult BeginGetIncludeInfo(string domainName, AsyncCallback callback, object userState)
        {
            HttpWebRequest request = CreateNormalRequest(GetIncludeInfoQueryUri(domainName));
            AsyncResult <IHaosouIncludeInfo> result = new AsyncResult <IHaosouIncludeInfo>(callback, userState);

            NetworkRequestAsyncTimeout.RegisterRequest(request.BeginGetResponse((ar) => {
                IHaosouIncludeInfo info = null;
                Exception error         = null;
                byte[] buffer           = g_bufferManager.TakeBuffer(BUFFER_SIZE);

                try {
                    string content = null;
                    using (HttpWebResponse response = (HttpWebResponse)((HttpWebRequest)ar.AsyncState).EndGetResponse(ar)) {
                        content = response.GetResponseString(buffer);
                    }

                    info = new IncludeInfo {
                        IncludeCount = ParseIncludeCount(content),
                    };
                } catch (Exception ex) {
                    error = ex;
                } finally {
                    g_bufferManager.ReturnBuffer(buffer);
                }

                result.MarkCompleted(error, false, info);
            }, request), request, TIMEOUT);

            return(result);
        }
コード例 #3
0
        public void GetIncludeInfoTest()
        {
            IHaosouIncludeInfo info1 = HaosouUtility.GetIncludeInfo("www.beianhao.net");
            IHaosouIncludeInfo info2 = HaosouUtility.GetIncludeInfo("www.xphter.com");
            IHaosouIncludeInfo info3 = HaosouUtility.GetIncludeInfo("news.qq.com");

            Assert.IsTrue(info1.IncludeCount > 0);
            Assert.IsTrue(info2.IncludeCount > 0);
            Assert.IsTrue(info3.IncludeCount > 0);
        }