/// 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); }
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; }