Beispiel #1
0
 //---------------------------------------------------------------------------------------------------------------------------------------------------
 // SendWebRequest
 //---------------------------------------------------------------------------------------------------------------------------------------------------
 public bool SendWebAsyncReq(TCWebAsyncInfo wai)
 {
     allDone = new ManualResetEvent(false);
     try
     {
         if (wai.ReqStr.Length < 1)
         {
             return(false);
         }
         Uri        uri  = new Uri(wai.ReqStr);
         WebRequest wreq = WebRequest.Create(uri);
         wreq.Credentials = CredentialCache.DefaultCredentials;
         if (wai.UseSSL)
         {
             wreq.Headers.Add(wai.ApiKey, wai.SecretKey);
             ServicePointManager.Expect100Continue = true;
             ServicePointManager.SecurityProtocol  = SecurityProtocolType.Tls12;
         }
         wai.WebReq = wreq;
         IAsyncResult r = (IAsyncResult)wreq.BeginGetResponse(new AsyncCallback(RespCallback), wai);
         allDone.WaitOne(wai.Timeout, false);
     }
     catch (Exception e)
     {
         wai.Error = "SendWebAsyncReq::Error - " + e.Message + "\r\n" + e.StackTrace;
         return(false);
     }
     return(true);
 }
Beispiel #2
0
        public TCWebAsyncInfo ReqQuoteAsync(string url, string symbol, int timeout = 3000)
        {
            TCWebAsyncInfo wai = new TCWebAsyncInfo(WAC, timeout, symbol);

            wai.ReqStr = url + symbol;
            WAC.SendWebAsyncReq(wai);
            return(wai);
        }
Beispiel #3
0
        //---------------------------------------------------------------------------------------------------------------------------------------------------
        // RespCallback
        //---------------------------------------------------------------------------------------------------------------------------------------------------
        private static void RespCallback(IAsyncResult ar)
        {
            TCWebAsyncInfo wai = null;

            try
            {
                wai = (TCWebAsyncInfo)ar.AsyncState;
                WebRequest  req            = wai.WebReq;
                WebResponse resp           = req.EndGetResponse(ar);
                Stream      ResponseStream = resp.GetResponseStream();
                wai.RespStream = ResponseStream;
                IAsyncResult iarRead = ResponseStream.BeginRead(wai.ReadBuf, 0, TCWebAsyncInfo.BufSize, new AsyncCallback(ReadCallBack), wai);
            }
            catch (Exception e)
            {
                if (wai != null)
                {
                    wai.Error = "RespCallback::Error - " + e.Message + "\r\n" + e.StackTrace;
                }
            }
        }
Beispiel #4
0
        //---------------------------------------------------------------------------------------------------------------------------------------------------
        // ReadCallBack
        //---------------------------------------------------------------------------------------------------------------------------------------------------
        private static void ReadCallBack(IAsyncResult ar)
        {
            TCWebAsyncInfo wai = null;

            try
            {
                wai          = (TCWebAsyncInfo)ar.AsyncState;
                wai.ReadSize = wai.RespStream.EndRead(ar);
                if (wai.ReadSize > 0)
                {
                    wai.ReadDataSize = wai.StreamDecode.GetChars(wai.ReadBuf, 0, wai.ReadSize, wai.ReadCBuf, 0);
                    wai.RespData.Append(Encoding.ASCII.GetString(wai.ReadBuf, 0, wai.ReadSize));
                    IAsyncResult iar = wai.RespStream.BeginRead(wai.ReadBuf, 0, TCWebAsyncInfo.BufSize, new AsyncCallback(ReadCallBack), wai);
                }
                else
                {
                    if (wai.RespData.Length > 0)
                    {
                        wai.Success     = true;
                        wai.RespDataStr = wai.RespData.ToString();
                        wai.WAC.WebLibCB.OnWebAsyncUpdateCB(wai);
                        return;
                    }
                    wai.RespStream.Close();
                    allDone.Set();
                }
            }
            catch (Exception e)
            {
                if (wai != null)
                {
                    wai.Error = "ReadCallBack::Error - " + e.Message + "\r\n" + e.StackTrace;
                }
            }
            return;
        }
Beispiel #5
0
        public new void OnWebAsyncUpdate(TCWebAsyncInfo wai)
        {
            TCQuote quote = new TCQuote(wai.RespDataStr);

            Isys.OnQuote(quote);
        }