Beispiel #1
0
    /// Send a http request.
    /// Return a HttpRequest object. Can cancel a request by pass this object to HttpLoader.CancelRequest().
    public HttpRequest SendRequest(string url, HttpRequest.Handler handler
                                   , object userData = null
                                   , float timeout   = MathEx.FLOAT_INFINITE)
    {
        HttpRequest newRequest = null;

        if (aliveRequestCount >= _nMaxParallelRequest)
        {
            newRequest          = new HttpRequest(null);
            newRequest.url      = url;
            newRequest.userData = userData;
            newRequest.timeout  = timeout;
            newRequest.handler  = handler;
            _queuedRequests.AddLast(newRequest);
        }
        else
        {
            WWW wwwTemp = new WWW(url);

            /// Make polling interleaved to avoid many more requests be processed at same time.
            newRequest           = new HttpRequest(wwwTemp);
            newRequest.url       = url;
            newRequest.startTime = Time.time;
            newRequest.timeout   = timeout;
            newRequest.userData  = userData;
            newRequest.handler   = handler;

            _aliveRequests.Add(newRequest);

            __nAliveRequestCount++;
        }

        return(newRequest);
    }
Beispiel #2
0
    public HttpLoader(HttpRequest.Handler dataHandler      = null
                      , HttpRequest.Handler errorHandler   = null
                      , HttpRequest.Handler timeoutHandler = null
                      , int nMaxParallelRequest            = 3
                      , float pollInterval = 0.2f)
    {
        _nMaxParallelRequest = nMaxParallelRequest;

        DataHandler    = _dataHandler;
        ErrorHandler   = _errorHandler;
        TimeoutHandler = _timeoutHandler;

        if (dataHandler != null)
        {
            DataHandler = dataHandler;
        }
        if (errorHandler != null)
        {
            ErrorHandler = errorHandler;
        }
        if (timeoutHandler != null)
        {
            TimeoutHandler = timeoutHandler;
        }

        _aliveRequests = new HashSet <HttpRequest>();
        _timer         = TimerMgr.REPEAT(MathEx.INFINITE, pollInterval, _onPollRequest);

        _queuedRequests = new LinkedList <HttpRequest>();

        __deadList           = new QuickList <HttpRequest>();
        __nAliveRequestCount = 0;
    }