public virtual DataResponse SendHandler(DataRequest dr)
 {
     //TODO [待完善]仅作临时使用, 目前仅支持DataRequest的GET请求
     Trace.WriteLine($"HTTP GET {dr.Url}");
     var resp = Http.SafeGet(dr.Url);
     return new DataResponse(dr.GUID, resp.Text, resp.StatusCode);
 }
Example #2
0
 /// <summary>
 /// 异步地将数据请求加入请求队列
 /// </summary>
 /// <param name="dr"></param>
 /// <returns></returns>
 public async Task<bool> AddAsync(DataRequest dr)
 {
     var bloomFilter = Magnesium.Current.BloomFilter;
     //检查布隆过滤器中是否有对应的URL
     if (dr.IsUseFilter && !bloomFilter.Contains(dr.Url))
     {
         if (await Magnesium.Current.PostAsync(dr))
         {
             bloomFilter.Add(dr.Url);
             return true;
         }
         return false;
     }
     return false;
 }
Example #3
0
 /// <summary>
 /// 将数据请求加入请求队列
 /// </summary>
 /// <param name="dr"></param>
 /// <returns>如果成功添加到请求队列中则返回true,否则返回false</returns>
 public bool Add(DataRequest dr)
 {
     var bloomFilter = Magnesium.Current.BloomFilter;
     //检查布隆过滤器中是否有对应的URL
     if (dr.IsUseFilter && !bloomFilter.Contains(dr.Url))
     {
         if (Magnesium.Current.Post(dr))
         {
             bloomFilter.Add(dr.Url);
             return true;
         }
         return false;
     }
     return false;
 }
Example #4
0
 internal async Task<bool> PostAsync(DataRequest dr)
 {
     _requestCount += 1;
     return await _requestQueue.SendAsync(dr);
 }
Example #5
0
 internal bool Post(DataRequest dr)
 {
     _requestCount += 1;
     return _requestQueue.Post(dr);
 }
Example #6
0
 /// <summary>
 /// 请求队列处理程序
 /// </summary>
 /// <param name="dr"></param>
 /// <param name="parseQueue"></param>
 public void RequestHandler(DataRequest dr, ActionBlock<DataResponse> parseQueue)
 {
     //TODO [待完善]异常处理
     var dcp = _dcpList[dr.GUID];
     var dresp = dcp.SendHandler(dr);
     parseQueue.Post(dresp);
 }
Example #7
0
 public override DataResponse SendHandler(DataRequest dr)
 {
     var xmr = (XMusicRequest)dr;
     var resp = Http.Get(dr.Url);
     return new XMusicResponse(dr.GUID, resp.Text, resp.StatusCode, xmr.ID);
 }
Example #8
0
 internal async Task <bool> PostAsync(DataRequest dr)
 {
     _requestCount += 1;
     return(await _requestQueue.SendAsync(dr));
 }
Example #9
0
 internal bool Post(DataRequest dr)
 {
     _requestCount += 1;
     return(_requestQueue.Post(dr));
 }