Esempio n. 1
0
 public static Props Props(IBatchLoader batchLoader,
                           IBatchSender batchSender,
                           LoadBalancerSettings loadBalancerSettings,
                           IRawPacketBatchParserActorFactory rawPacketBatchParserActorFactory) =>
 Akka.Actor.Props.Create(
     () => new OfflineLoadBalancerActor(batchLoader, batchSender, loadBalancerSettings,
                                        rawPacketBatchParserActorFactory));
Esempio n. 2
0
        public void Start(CompleteHandler completeHandler, BatchProgressHandler progressHandler, ErrorHandler errorHandler,
                          BatchSingleCompleteHandler singleCompleteHandler)
        {
            if (this._started)
            {
                return;
            }

            this._started              = true;
            this.completeHandler       = completeHandler;
            this.progressHandler       = progressHandler;
            this.errorHandler          = errorHandler;
            this.singleCompleteHandler = singleCompleteHandler;

            this.numLoaded = 0;
            int count = this._loaders.Count;

            if (count > 0)
            {
                for (int i = 0; i < count; i++)
                {
                    IBatchLoader loader = this._loaders[i];
                    loader.Load(this.OnLoadComplete, this.OnLoadProgress, this.OnLoadError, this._useWWW, this._fromCache, this._sync);
                }
            }
            else
            {
                this.completeHandler?.Invoke(this);
            }
        }
Esempio n. 3
0
        public void Cancel()
        {
            int count = this._loaders.Count;

            for (int i = 0; i < count; i++)
            {
                IBatchLoader loader = this._loaders[i];
                loader.Cancel();
                this._progress[loader] = 0f;
            }
            this._started = false;
        }
Esempio n. 4
0
        private void OnLoadProgress(object sender, float progress)
        {
            IBatchLoader loader = ( IBatchLoader )sender;

            this._progress[loader] = progress;
            float sum = 0f;

            foreach (KeyValuePair <IBatchLoader, float> kv in this._progress)
            {
                sum += kv.Value;
            }
            this.progressHandler?.Invoke(this, sum / this.numItems, loader);
        }
Esempio n. 5
0
        public void Remove(IBatchLoader loader)
        {
            if (this._started)
            {
                Logger.Warn("Loader must be removed before start");
                return;
            }

            if (!this._progress.ContainsKey(loader))
            {
                return;
            }

            this._loaders.Remove(loader);
            this._progress.Remove(loader);
        }
Esempio n. 6
0
        public void Add(IBatchLoader loader)
        {
            if (this._started)
            {
                Logger.Warn("Loader must be added before start");
                return;
            }

            if (this._progress.ContainsKey(loader))
            {
                return;
            }

            this._loaders.Add(loader);
            this._progress[loader] = 0f;
        }
Esempio n. 7
0
        private void OnLoadError(object sender, string msg, object data)
        {
            IBatchLoader loader = ( IBatchLoader )sender;

            this._progress[loader] = 1f;

            this.errorHandler?.Invoke(this, msg);

            ++this.numLoaded;

            if (this._loaders.Count == this.numLoaded)
            {
                this._loaders.Clear();
                this.completeHandler?.Invoke(this);
            }
        }
Esempio n. 8
0
        private void OnLoadComplete(object sender, AssetsProxy assetsProxy, object data)
        {
            IBatchLoader loader = ( IBatchLoader )sender;

            this._progress[loader] = 1f;

            this.singleCompleteHandler?.Invoke(this, assetsProxy, loader);

            ++this.numLoaded;

            if (this._loaders.Count == this.numLoaded)
            {
                this._loaders.Clear();
                this.completeHandler?.Invoke(this);
            }
        }
Esempio n. 9
0
        public OfflineLoadBalancerActor(IBatchLoader batchLoader,
                                        IBatchSender batchSender,
                                        LoadBalancerSettings loadBalancerSettings,
                                        IRawPacketBatchParserActorFactory rawPacketBatchParserActorFactory)
        {
            this._batchLoader                      = batchLoader;
            this._loadBalancerSettings             = loadBalancerSettings;
            this._rawPacketBatchParserActorFactory = rawPacketBatchParserActorFactory;
            this._batchSender                      = batchSender;

            this.StartWith(OfflineLoadBalancerStates.WaitingForProcessingRequest, null);

            this.SetupFSMWhen();
            this.SetupFSMTransitions();
            this.SetupPeriodicalGarbageCollecting();
        }
Esempio n. 10
0
 private static void OnSingleLoadComplete(object sender, AssetsProxy assetsproxy, IBatchLoader loader, object data)
 {
     //CLogger.Log( $"batch:{( ( AssetsLoader )loader ).assetBundleName}" );
 }
Esempio n. 11
0
 private static void OnPreloadProgress(object sender, float progress, IBatchLoader loader)
 {
     _progressHandler?.Invoke(null, progress * 0.5f);
 }
Esempio n. 12
0
 private void OnInternalProgress(object sender, float progress, IBatchLoader loader)
 {
     this.progressHandler?.Invoke(this, progress);
 }
Esempio n. 13
0
 private void OnInternalSingleComplete(object sender, AssetsProxy assetsProxy, IBatchLoader loader, object o)
 {
     if (assetsProxy.name == this._assetBundleName)
     {
         this._dec = assetsProxy.assetBundle;
     }
     else
     {
         this._res = assetsProxy.assetBundle;
     }
 }