예제 #1
0
        protected ApplicationBase(IDeserializerStrategy deserializer, ISerializerStrategy serializer, ILog logger, IManagedClientSessionFactory sessionManagedFactory)
        {
            if (deserializer == null)
            {
                throw new ArgumentNullException(nameof(deserializer));
            }
            if (serializer == null)
            {
                throw new ArgumentNullException(nameof(serializer));
            }
            if (logger == null)
            {
                throw new ArgumentNullException(nameof(logger));
            }

            Logger = logger;

            //Init internal services/components
            //Create these first; thread needs them
            peerServiceCollection = new AUIDServiceCollection <ClientSessionServiceContext>(50);
            netPeerAUIDService    = new AUIDNetPeerServiceDecorator(peerServiceCollection);

            managedNetworkThread = new ManagedLidgrenNetworkThread(serializer, new LidgrenServerMessageContextFactory(deserializer), new PeerSendServiceSelectionStrategy(peerServiceCollection), e => Logger.Fatal($"{e.Message} StackTrace: {e.StackTrace}"));
            InternalClientSessionFactory sessionFactory = new InternalClientSessionFactory(peerServiceCollection, serializer, Logger, netPeerAUIDService, sessionManagedFactory);

            sessionlessHandler = new SessionlessMessageHandler(sessionFactory, Logger);
        }
예제 #2
0
        public InternalClientSessionFactory(AUIDServiceCollection <ClientSessionServiceContext> peerServiceCollection, ISerializerStrategy serializer, ILog peerLogger, IAUIDService <INetPeer> netPeerAuidService, IManagedClientSessionFactory managedSessionFactory)
        {
            if (peerServiceCollection == null)
            {
                throw new ArgumentNullException(nameof(peerServiceCollection));
            }
            if (serializer == null)
            {
                throw new ArgumentNullException(nameof(serializer));
            }
            if (peerLogger == null)
            {
                throw new ArgumentNullException(nameof(peerLogger));
            }
            if (netPeerAuidService == null)
            {
                throw new ArgumentNullException(nameof(netPeerAuidService));
            }
            if (managedSessionFactory == null)
            {
                throw new ArgumentNullException(nameof(managedSessionFactory));
            }

            PeerServiceCollection = peerServiceCollection;
            Serializer            = serializer;
            PeerLogger            = peerLogger;
            NetPeerAUIDService    = netPeerAuidService;
            ManagedSessionFactory = managedSessionFactory;
        }
예제 #3
0
        //prevents inherting from this class: http://stackoverflow.com/questions/1244953/internal-abstract-class-how-to-hide-usage-outside-assembly
        internal GladNetAppBase()
            : base()
        {
            //sets up logging
            AppLogger = SetupLogging();             //needed for the services below

            //These new services are required for the GladNet2 2.x routeback feature
            auidMapService   = new AUIDServiceCollection <INetPeer>(100);
            routebackService = new DefaultNetworkMessageRouteBackService(auidMapService, AppLogger);
        }
		//prevents inherting from this class: http://stackoverflow.com/questions/1244953/internal-abstract-class-how-to-hide-usage-outside-assembly
		internal GladNetAppBase()
			: base()
		{
			//sets up logging
			AppLogger = SetupLogging(); //needed for the services below

			//These new services are required for the GladNet2 2.x routeback feature
			auidMapService = new AUIDServiceCollection<INetPeer>(100);
			routebackService = new DefaultNetworkMessageRouteBackService(auidMapService, AppLogger);
		}