private void OnAdResponseReceived(System.Object sender, UploadStringCompletedEventArgs e)
        {
            Logger.Log(this, "OnAdResponseReceived: Entered");

            /**
             * Error Handling for Ad Response
             **/
            if (e.Cancelled)
            {
                String           errorMesage = "Request Cancelled.";
                AdUnitFailedArgs args        = new AdUnitFailedArgs(AdUnitFailedArgs.ErrorCode.NO_AD_LOADED, errorMesage, this.adUnitId);
                adUnitListener.OnAdUnitLoadFailed(args);
                //AnalyticsWebManager.Push(new AdEventDTO(this.adUnitId, AdEventDTO.EventType.AdMetadataLoadFailed, errorMesage), AnalyticsWebWrapperDTO.Action.AdEvent, AnalyticsWebManager.PRIORITY.HIGH);
                return;
            }
            if (e.Error != null)
            {
                String           errorMessage = e.Error.Message;
                AdUnitFailedArgs args         = new AdUnitFailedArgs(AdUnitFailedArgs.ErrorCode.NO_AD_LOADED, errorMessage, this.adUnitId);
                adUnitListener.OnAdUnitLoadFailed(args);
                //AnalyticsWebManager.Push(new AdEventDTO(this.adUnitId, AdEventDTO.EventType.AdMetadataLoadFailed, errorMessage), AnalyticsWebWrapperDTO.Action.AdEvent, AnalyticsWebManager.PRIORITY.HIGH);
                return;
            }
            AdResponse adResponse = JsonConvert.DeserializeObject <AdResponse>(e.Result);

            if (adResponse.errorCode != 0)
            {
                String           errorMessage = adResponse.errorMsg;
                AdUnitFailedArgs args         = new AdUnitFailedArgs(AdUnitFailedArgs.ErrorCode.NO_AD_LOADED, errorMessage, this.adUnitId);
                adUnitListener.OnAdUnitLoadFailed(args);
                //AnalyticsWebManager.Push(new AdEventDTO(this.adUnitId, AdEventDTO.EventType.AdMetadataLoadFailed, errorMessage), AnalyticsWebWrapperDTO.Action.AdEvent, AnalyticsWebManager.PRIORITY.HIGH);
                return;
            }
            //AnalyticsWebManager.Push(new AdEventDTO(this.adUnitId, AdEventDTO.EventType.AdMetadataLoadSuccess, ""), AnalyticsWebWrapperDTO.Action.AdEvent, AnalyticsWebManager.PRIORITY.HIGH);

            /**
             * Analyzing individual ads in the response
             */
            ads = new List <ImageTextureAd>();
            for (int i = 0; i < adResponse.adResources.Count; i++)
            {
                AdResourceMetadata adMetadata = adResponse.adResources[i];
                if (adMetadata.errorCode != 0) //Some error occured in this particualr ad
                {
                    adsMutex.WaitOne();
                    adErrors.Add(new AdErrorData(adMetadata.errorCode, adMetadata.errorMsg));
                    adsMutex.ReleaseMutex();
                }
                else if (adMetadata.errorCode == 0) //No error for this ad
                {
                    ImageTextureAd ad = new ImageTextureAd(adMetadata.adServingId, this.adUnitId, adMetadata.diffuseTextureImageUrl, this);
                    ad.DownloadAd();
                }
            }
        }
 void HandleOnAdLoadFailed(object sender, System.EventArgs e)
 {
     co.chimeralabs.ads.managed.AdUnitFailedArgs args = (co.chimeralabs.ads.managed.AdUnitFailedArgs)e;
     if (args.errorCode == co.chimeralabs.ads.managed.AdUnitFailedArgs.ErrorCode.FEW_ADS_LOADED)
     {
         Debug.Log("(AdUnit:" + args.adUnitId + ")Few ads Loaded. Error Message " + args.errorMessage);
     }
     else if (args.errorCode == co.chimeralabs.ads.managed.AdUnitFailedArgs.ErrorCode.NO_AD_LOADED)
     {
         Debug.Log("(AdUnit:" + args.adUnitId + ")No ad Loaded. Error Message:" + args.errorMessage);
     }
 }
 private void AllAdsResponded()
 {
     if (ads.Count < nDistinctAds)
     {
         String           errorMesage = "Only " + ads.Count + " ads could be loaded for adUnit " + this.adUnitId + ". Displaying these ads.";
         AdUnitFailedArgs args        = new AdUnitFailedArgs(AdUnitFailedArgs.ErrorCode.FEW_ADS_LOADED, errorMesage, this.adUnitId);
         adUnitListener.OnAdUnitLoadFailed(args);
         if (ads.Count == 0)
         {
             return;
         }
     }
     adUnitListener.OnAdUnitLoaded(this); //Notify that all ads have been loaded
 }