Exemplo n.º 1
0
 internal void Invalidate()
 {
     list = null;
     next = null;
     prev = null;
     ObjectAllocatorHolder <LinkedListNode <T> > .Free(this);
 }
Exemplo n.º 2
0
        public static EntitasGameEntity <TEntity> Allocate(TEntity entity, IComponentTypeLookup lookup)
        {
            var rc = ObjectAllocatorHolder <EntitasGameEntity <TEntity> > .Allocate();

            rc.Init(entity, lookup);
            return(rc);
        }
Exemplo n.º 3
0
        public static ComponentWrapper Allocate(IGameComponent component)
        {
            var rc = ObjectAllocatorHolder <ComponentWrapper> .Allocate();

            rc._component = component;
            return(rc);
        }
Exemplo n.º 4
0
        public int ProcessSendQueue(bool isMultiThread = false)
        {
            int count = 0;

            while (_sendQueue.Count > 0 && count < MaxLoopCount)
            {
                if (isMultiThread)
                {
                    count++;
                }
                try
                {
                    NetworkMessageItem item = (NetworkMessageItem)_sendQueue.Dequeue();
                    if (IsConnected)
                    {
                        DoSend(item);
                    }

                    ObjectAllocatorHolder <MemoryStream> .Free(item.MemoryStream);
                }
                catch (Exception e)
                {
                    _logger.ErrorFormat("error while do send {0} {1}", IdInfo(), e);
                }
            }

            return(count);
        }
Exemplo n.º 5
0
            public static AssetLoadRequestBatch <T> Alloc()
            {
                var batch = ObjectAllocatorHolder <AssetLoadRequestBatch <T> > .Allocate();

                batch._isDisposed = false;
                return(batch);
            }
Exemplo n.º 6
0
        public void Dispose()
        {
            Logger.Info("AbstractNetowrkChannel.Dispose");
            try
            {
                ProcessSerializeQueue();
                ProcessSendQueue();
                ProcessDeserializeQueue();
                //_serializer 有可能是公共的,这里不调Dispose
                //			if (_serializer != null)
                //			{
                //				_serializer.Dispose();
                //			}
                ObjectAllocatorHolder <MemoryStream> .Free(_receiveMemoryStream);

                _receiveMemoryStream = null;
                if (_serializer != null)
                {
                    _serializer.Dispose();
                }
            }
            catch (Exception e)
            {
                Logger.ErrorFormat("{0}", e);
            }
        }
Exemplo n.º 7
0
        public static MyBinaryWriter Allocate(Stream stream)
        {
            var writer = ObjectAllocatorHolder <MyBinaryWriter> .Allocate();

            writer.OutStream = stream;
            return(writer);
        }
Exemplo n.º 8
0
        public static ModifyEntityPatch Allocate(IGameEntity entity)
        {
            var rc = ObjectAllocatorHolder <ModifyEntityPatch> .Allocate();

            rc.Key = entity.EntityKey;
            return(rc);
        }
Exemplo n.º 9
0
        public static ComponentWrapper Allocate(int componentId)
        {
            var rc = ObjectAllocatorHolder <ComponentWrapper> .Allocate();

            rc._component = _gameCompoentInfo.Allocate(componentId);
            return(rc);
        }
Exemplo n.º 10
0
        public static EntityMapCacheGroup Allocate(EntityMap entityId2Entity)
        {
            EntityMapCacheGroup cacheGroup = ObjectAllocatorHolder <EntityMapCacheGroup> .Allocate();

            cacheGroup.Initialize(entityId2Entity);
            return(cacheGroup);
        }
Exemplo n.º 11
0
        public static DeleteEntityPatch Allocate(EntityKey key)
        {
            var rc = ObjectAllocatorHolder <DeleteEntityPatch> .Allocate();

            rc.Key = key;
            return(rc);
        }
Exemplo n.º 12
0
        public static VNetworkMessageItem Allocate(int messageType, object messageBody, int channel)
        {
            VNetworkMessageItem rc = ObjectAllocatorHolder <VNetworkMessageItem> .Allocate();

            rc.Init(messageType, messageBody, channel);
            return(rc);
        }
Exemplo n.º 13
0
            public static AssetLoadRequestNode Alloc(AbstractAssetLoadRequest request)
            {
                var node = ObjectAllocatorHolder <AssetLoadRequestNode> .Allocate();

                node.Value = request;
                return(node);
            }
Exemplo n.º 14
0
        public static ListBasedGameEntity Allocate(EntityKey entityKey)
        {
            var rc = ObjectAllocatorHolder <ListBasedGameEntity> .Allocate();

            rc.EntityKey = entityKey;
            return(rc);
        }
Exemplo n.º 15
0
        public static CompensatioSnapshotGameEntity Allocate(EntityKey entityKey)
        {
            var rc = ObjectAllocatorHolder <CompensatioSnapshotGameEntity> .Allocate();

            rc.EntityKey = entityKey;
            return(rc);
        }
Exemplo n.º 16
0
        public MemoryStream SerializeSinaglePackage(UpdateLatestPacakge msg)
        {
            MemoryStream stream = ObjectAllocatorHolder <MemoryStream> .Allocate();

            stream.Seek(0, SeekOrigin.Begin);
            var  binaryWriter = MyBinaryWriter.Allocate(stream);
            long bodyLength;
            var  old = MessagePool.GetPackageBySeq(msg.Head.BaseUserCmdSeq);

            if (old != null)
            {
                msg.Head.Serialize(binaryWriter);
                bodyLength = SerializeComponents(binaryWriter, old.UpdateComponents, msg.UpdateComponents);
            }
            else
            {
                msg.Head.BaseUserCmdSeq = -1;
                msg.Head.Serialize(binaryWriter);
                bodyLength = SerializeComponents(binaryWriter, _emptyUpdateComponents, msg.UpdateComponents);
            }

            AssertUtility.Assert(bodyLength < 65535);
            msg.Head.ReWriteBodyLength(binaryWriter, (short)bodyLength);
            binaryWriter.ReleaseReference();
            return(stream);
        }
Exemplo n.º 17
0
        private void RemoveHistoryFirst()
        {
            _sendHistorySeqs.RemoveFirst();
            var old = _sendHistoryStreams.RemoveFirst();

            ObjectAllocatorHolder <MemoryStream> .Free(old);
        }
Exemplo n.º 18
0
        public static EntityMapCache Allocate(EntityMap entityId2Entity)
        {
            EntityMapCache cache = ObjectAllocatorHolder <EntityMapCache> .Allocate();

            cache.SetEntityMap(entityId2Entity);
            return(cache);
        }
Exemplo n.º 19
0
        public virtual object Deserialize(Stream inStream)
        {
            T message = ObjectAllocatorHolder <T> .Allocate();

            MergeFrom(message, inStream);
            return(message);
        }
Exemplo n.º 20
0
 protected override void OnCleanUp()
 {
     _seq      = -1;
     _snapshot = null;
     _filter.Init(EntityKey.Default, Vector3.zero);
     _preEntitys.Clear();
     ObjectAllocatorHolder <PartialSnapshotFactory> .Free(this);
 }
Exemplo n.º 21
0
        public static SyncLatestEntityMap Allocate(bool ownEntity = true)
        {
            SyncLatestEntityMap rc = ObjectAllocatorHolder <SyncLatestEntityMap> .Allocate();

            rc._ownEntity  = ownEntity;
            rc._arrayDirty = true;
            return(rc);
        }
Exemplo n.º 22
0
        public static PredictionEntityMap Allocate(bool ownEntity = true)
        {
            PredictionEntityMap rc = ObjectAllocatorHolder <PredictionEntityMap> .Allocate();

            rc._ownEntity  = ownEntity;
            rc._arrayDirty = true;
            return(rc);
        }
Exemplo n.º 23
0
        public static CacheEntityMap Allocate(bool ownEntity = true)
        {
            CacheEntityMap rc = ObjectAllocatorHolder <CacheEntityMap> .Allocate();

            rc._ownEntity  = ownEntity;
            rc._arrayDirty = true;
            return(rc);
        }
Exemplo n.º 24
0
        public static PlayBackEntityMap Allocate(bool ownEntity = true)
        {
            PlayBackEntityMap rc = ObjectAllocatorHolder <PlayBackEntityMap> .Allocate();

            rc.ownEntity  = ownEntity;
            rc.arrayDirty = true;
            return(rc);
        }
Exemplo n.º 25
0
        internal static LinkedListNode <T> Allocate(MyLinkedList <T> list, T value)
        {
            var rc = ObjectAllocatorHolder <LinkedListNode <T> > .Allocate();

            rc.list  = list;
            rc.Value = value;
            return(rc);
        }
Exemplo n.º 26
0
        public static RemoveAssetStatus Allocate(AssetStatus status, ICommonResourceActions actions)
        {
            var ret = ObjectAllocatorHolder <RemoveAssetStatus> .Allocate();

            ret.Actions = actions;
            ret.Status  = status;
            return(ret);
        }
Exemplo n.º 27
0
 public void Free()
 {
     foreach (var value in EmitterDict.Values)
     {
         ObjectAllocatorHolder <AudioEmitter> .Free(value);
     }
     EmitterDict.Clear();
 }
Exemplo n.º 28
0
        public static T AllocEvent <T>() where T : RoomEvent
        {
            var evt = ObjectAllocatorHolder <T> .Allocate();

            evt._allocator = ObjectAllocatorHolder <T> .GetAllocator();

            return(evt);
        }
Exemplo n.º 29
0
        public void SendSnapshot(int interval, SnapshotFactory snapshotFactory,
                                 Dictionary <INetworkChannel, PlayerEntity> channelToPlayer)
        {
            var           sessionObjects        = _contexts.session.serverSessionObjects;
            Bin2DConfig   bin2DConfig           = sessionObjects.Bin2DConfig;
            IBin2DManager bin                   = sessionObjects.Bin2dManager;
            int           snapshotSeq           = sessionObjects.GetNextSnapshotSeq();
            int           vehicleSimulationTime = sessionObjects.SimulationTimer.CurrentTime;
            int           serverTime            = _contexts.session.currentTimeObject.CurrentTime;

            _sendSnapshotTasks.Clear();
            var freeMoveEntitys = _globalFreeMoveEntities.GetEntities();
            var weaponEntities  = _globalWeaponEntities.GetEntities();

            foreach (var entry in channelToPlayer)
            {
                INetworkChannel channel = entry.Key;
                PlayerEntity    player  = entry.Value;
                if (player.hasStage &&
                    player.stage.CanSendSnapshot() &&
                    channel.IsConnected &&
                    !player.network.NetworkChannel.Serializer.MessageTypeInfo.SkipSendSnapShot(serverTime))
                {
                    var p = ObjectAllocatorHolder <CreateSnapshotParams> .Allocate().Build(snapshotFactory, player,
                                                                                           bin2DConfig, bin, serverTime,
                                                                                           snapshotSeq,
                                                                                           vehicleSimulationTime, channel);

                    var entitys = p.PreEnitys;
                    AddTeamPlayers(player, entitys, _contexts);
                    AddGlobalFreeMove(player, entitys, freeMoveEntitys);
                    AddWeapon(player, entitys, weaponEntities);
                    _sendSnapshotTasks.Add(p);
                }
                else
                {
                    player.network.NetworkChannel.Serializer.MessageTypeInfo.IncSendSnapShot();
                    _logger.DebugFormat("channel:{2} skip SendSnapshot :{0} {1}!", channel.IsConnected,
                                        !player.network.NetworkChannel.Serializer.MessageTypeInfo.SkipSendSnapShot(serverTime),
                                        channel.IdInfo());
                }
            }

            if (SharedConfig.MutilThread)
            {
#if ENABLE_NEW_SENDSNAPSHOT_THREAD
                ConsumerExecute();
#else
                MutilExecute();
#endif
            }
            else
            {
                MainExecute();
            }

            _logger.DebugFormat("SendSnapshot Threads Done;");
        }
Exemplo n.º 30
0
        public static DeleteComponentPatch Allocate(IGameComponent comp)
        {
            var rc = ObjectAllocatorHolder <DeleteComponentPatch> .Allocate();

            rc.CreateGameComponent(comp.GetComponentId());
            // ReSharper disable once PossibleNullReferenceException
            (rc.Component as INetworkObject).CopyFrom(comp);
            return(rc);
        }