Ejemplo n.º 1
0
        /// <summary>
        /// Collect data and provides.
        /// </summary>
        /// <param name="type"></param>
        private void Broadcast(Protocol.Type type = Protocol.Type.TYPE_UPDATE)
        {
            // Create snapshot.
            Protocol.Protocol protocol = new Protocol.Protocol
            {
                Type   = type,
                Length = _Length
            };

            foreach (ExtendedPlayer player in _Players)
            {
                if (player.Jumping > 0)
                {
                    player.Player.Position.Jumping = true;
                }
                else
                {
                    player.Player.Position.Jumping = false;
                }

                protocol.Players.Add(player.Player);
            }

            // Provide for broadcasting
            SnapshotCreated?.Invoke(new SnapshotArguments(protocol));
        }
Ejemplo n.º 2
0
        public void Handle(SnapshotCreated snapshotCreated)
        {
            //flush the queue
            _queue.CompleteAdding();
            _writerThread.Join();

            //notify actual writer
            _decoratedWriter.Handle(snapshotCreated);

            //restart
            Init();
        }
Ejemplo n.º 3
0
        public virtual async Task <ISnapshot> CreateSnapshotAsync(ISnapshot snapshot)
        {
            Argument.IsNotNull(() => snapshot);

            Log.Info($"Creating snapshot '{snapshot}'");

            await SnapshotCreatingAsync.SafeInvokeAsync(this, new SnapshotEventArgs(snapshot));

            var providers = GetProviders();

            foreach (var provider in providers)
            {
                await provider.CreatingSnapshotAsync(snapshot);
            }

            foreach (var provider in providers)
            {
                Log.Debug($"Creating data for snapshot '{snapshot}' using provider '{provider}'");

                var names = provider.GetNames();

                foreach (var name in names)
                {
                    Log.Debug($"Creating data for snapshot '{snapshot}' using provider '{provider}::{name}'");

                    byte[] providerData;

                    using (var memoryStream = new MemoryStream())
                    {
                        await provider.StoreDataToSnapshotAsync(name, memoryStream);

                        providerData = memoryStream.ToArray();
                    }

                    snapshot.SetData(name, providerData);
                }
            }

            foreach (var provider in providers)
            {
                await provider.CreatedSnapshotAsync(snapshot);
            }

            SnapshotCreated.SafeInvoke(this, () => new SnapshotEventArgs(snapshot));

            Log.Info($"Created snapshot '{snapshot}'");

            return(snapshot);
        }
Ejemplo n.º 4
0
 public void Handle(SnapshotCreated snapshotCreated)
 {
     //no op
 }
Ejemplo n.º 5
0
 public void Handle(SnapshotCreated snapshotCreated)
 {
     Rollover(snapshotCreated.Revision + 1);
 }
Ejemplo n.º 6
0
 protected virtual void OnSnapshotCreated(Snapshot snapshot)
 {
     Active = false;
     SnapshotCreated?.Invoke(this, snapshot);
 }