public override void Register(IServiceRegister register)
        {
            //Just create a new collection and register it
            NetworkEntityCollection             entityCollection = new NetworkEntityCollection();
            IncrementalNetworkGuidFactory       guidFactory      = new IncrementalNetworkGuidFactory();
            NetPeerCollection                   peerCollection   = new NetPeerCollection();
            ConnectionToPlayerGuidLookupService lookupService    = new ConnectionToPlayerGuidLookupService();

            register.Register(entityCollection, RegistrationType.SingleInstance, null);
            register.Register(guidFactory, RegistrationType.SingleInstance, typeof(INetworkGuidFactory));
            register.Register(peerCollection, RegistrationType.SingleInstance, typeof(IReadonlyPeerCollection));
            register.Register(peerCollection, RegistrationType.SingleInstance, typeof(IPeerCollection));
            register.Register(lookupService, RegistrationType.SingleInstance, typeof(IConnectionToGuidLookupService));
            register.Register(lookupService, RegistrationType.SingleInstance, typeof(IConnectionToGuidRegistry));
        }
Esempio n. 2
0
        /// <summary>
        /// NetManager constructor
        /// </summary>
        /// <param name="listener">Network events listener</param>
        /// <param name="maxConnections">Maximum connections (incoming and outcoming)</param>
        public NetManager(INetEventListener listener, int maxConnections)
        {
            //_logicThread = new Thread(UpdateLogic) { Name = "LogicThread", IsBackground = true };
            _socket           = new NetSocket(ReceiveLogic);
            _netEventListener = listener;
            _netEventsQueue   = new FastQueue <NetEvent>();
            _netEventsPool    = new Stack <NetEvent>();
            NetPacketPool     = new NetPacketPool();
            NatPunchModule    = new NatPunchModule(this);
            Statistics        = new NetStatistics();
            _peers            = new NetPeerCollection(maxConnections);
            _connectingPeers  = new HashSet <NetEndPoint>();
            _maxConnections   = maxConnections;
            _updateTimeFilter = new long[3];

            // Precreate all needed Merge Packets
            NetPacketPool.PoolLimit = maxConnections * 100;
            //NetPacketPool.Prepool(maxConnections * 2, MtuStartIdx >= 0 && MtuStartIdx < NetConstants.PossibleMtu.Length ? NetConstants.PossibleMtu[MtuStartIdx] : (NetConstants.MaxPacketSize - NetConstants.FragmentHeaderSize));
            //NetPacketPool.Prepool(maxConnections * 20, 16);
        }