/// <summary> /// Initializes a new instance of the <see cref="StumpsHost"/> class. /// </summary> /// <param name="serverFactory">The factory used to initialize new server instances.</param> /// <param name="dataAccess">The data access provider used by the instance.</param> /// <exception cref="ArgumentNullException"> /// <paramref name="serverFactory"/> is <c>null</c>. /// or /// <paramref name="dataAccess"/> is <c>null</c>. /// </exception> public StumpsHost(IServerFactory serverFactory, IDataAccess dataAccess) { _serverFactory = serverFactory ?? throw new ArgumentNullException(nameof(serverFactory));; _dataAccess = dataAccess ?? throw new ArgumentNullException(nameof(dataAccess)); _serverInstances = new ConcurrentDictionary <string, StumpsServerInstance>(StringComparer.OrdinalIgnoreCase); }
/// <summary> /// Creates what might be considered a good "default" server factory, if possible, /// or <c>null</c> if no good default was possible. A <c>null</c> value could be returned, /// for example, if a user opted to remove all implementations of <see cref="IServer"/> and /// the associated <see cref="IServerFactory"/> for security reasons. /// </summary> public static IServerFactory CreateDefaultServerFactoryOrNull(IExceptionContext ectx) { Contracts.CheckValue(ectx, nameof(ectx)); // REVIEW: There should be a better way. There currently isn't, // but there should be. This is pretty horrifying, but it is preferable to // the alternative of having core components depend on an actual server // implementation, since we want those to be removable because of security // concerns in certain environments (since not everyone will be wild about // web servers popping up everywhere). var cat = ModuleCatalog.CreateInstance(ectx); ModuleCatalog.ComponentInfo component; if (!cat.TryFindComponent(typeof(IServerFactory), "mini", out component)) { return(null); } IServerFactory factory = (IServerFactory)Activator.CreateInstance(component.ArgumentType); var field = factory.GetType().GetField("Port"); if (field?.FieldType != typeof(int)) { return(null); } field.SetValue(factory, 12345); return(factory); }
/// <summary> /// Initializes a new instance of the <see cref="T:Stumps.Server.StumpsServerInstance"/> class. /// </summary> /// <param name="serverFactory">The factory used to initialize new server instances.</param> /// <param name="serverId">The unique identifier of the Stumps server.</param> /// <param name="dataAccess">The data access provider used by the instance.</param> public StumpsServerInstance(IServerFactory serverFactory, string serverId, IDataAccess dataAccess) { if (serverFactory == null) { throw new ArgumentNullException("serverFactory"); } _serverFactory = serverFactory; this.ServerId = serverId; _lock = new ReaderWriterLockSlim(LockRecursionPolicy.NoRecursion); _dataAccess = dataAccess; // Setup the objects needed to keep track of Stumps. _stumpList = new List<StumpContract>(); _stumpReference = new Dictionary<string, StumpContract>(StringComparer.OrdinalIgnoreCase); // Setup the recordings maintained by the server instance. this.Recordings = new Recordings(); // Initialize the server InitializeServer(); // Initialize the Stumps InitializeStumps(); }
public DaClient(IServerFactory factory) { _logger.Trace($".ctor( {factory} )"); if (factory == null) { throw new ArgumentNullException(nameof(factory)); } _factory = factory; }
public IWebApplicationBuilder UseServer(IServerFactory factory) { if (factory == null) { throw new ArgumentNullException(nameof(factory)); } _serverFactory = factory; return this; }
/// <summary> /// Initializes a new instance of the <see cref="ServerHost"/> class /// with the provided end-point, server factory and logger. /// </summary> /// <param name="endPoint">Listener end-point</param> /// <param name="keepAliveInterval">Interval in seconds to send TCP keepalive packets</param> /// <param name="serverFactory">Server factory</param> /// <param name="logger">Current logger instance</param> public ServerHost(IPEndPoint endPoint, int keepAliveInterval, IServerFactory serverFactory, ILogger logger) { if (endPoint == null) { throw new ArgumentNullException(nameof(endPoint)); } if (serverFactory == null) { throw new ArgumentNullException(nameof(serverFactory)); } if (logger == null) { throw new ArgumentNullException(nameof(logger)); } this.serverFactory = serverFactory; this.logger = logger; if (keepAliveInterval > 0) { // Convert to milliseconds keepAliveInterval *= 1000; keepAliveSettings = new byte[] { // onoff 1, 0, 0, 0, // keepalivetime (byte)(keepAliveInterval & 255), (byte)(keepAliveInterval >> 8 & 255), (byte)(keepAliveInterval >> 16 & 255), (byte)(keepAliveInterval >> 24 & 255), // keepaliveinterval (byte)(keepAliveInterval & 255), (byte)(keepAliveInterval >> 8 & 255), (byte)(keepAliveInterval >> 16 & 255), (byte)(keepAliveInterval >> 24 & 255) }; } socket = new Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp); socket.Bind(endPoint); socket.Listen(ConnectionQueue); logger.WriteInfo(TraceResources.ServerStarted); socket.BeginAccept(EndAccept, socket); }
public static IServer CreateGate(this IServerFactory factory, AppFunc app, IScheduler scheduler, IDictionary <string, object> context) { if (context == null) { context = new Dictionary <string, object>(); } if (!context.ContainsKey("kayak.Scheduler")) { context["kayak.Scheduler"] = scheduler; } return(factory.CreateHttp(new GateRequestDelegate(app, context), scheduler)); }
public ServerClientManager( IServerFactory serverFactory, TychaiaServer server, TychaiaServerWorld world, int uniqueID, string initialPlayerName, MxClient client) { this.m_Server = server; this.m_World = world; this.UniqueID = uniqueID; this.PlayerName = initialPlayerName; this.MxClient = client; this.Entities = new List<IServerEntity>(); this.ClientChunkStateManager = serverFactory.CreateClientChunkStateManager(client); }
/// <summary> /// Initializes a new instance of the <see cref="T:Stumps.Server.StumpsHost"/> class. /// </summary> /// <param name="serverFactory">The factory used to initialize new server instances.</param> /// <param name="dataAccess">The data access provider used by the instance.</param> /// <exception cref="System.ArgumentNullException"> /// <paramref name="serverFactory"/> is <c>null</c>. /// or /// <paramref name="dataAccess"/> is <c>null</c>. /// </exception> public StumpsHost(IServerFactory serverFactory, IDataAccess dataAccess) { if (serverFactory == null) { throw new ArgumentNullException("serverFactory"); } if (dataAccess == null) { throw new ArgumentNullException("dataAccess"); } _serverFactory = serverFactory; _dataAccess = dataAccess; _serverInstances = new ConcurrentDictionary<string, StumpsServerInstance>(StringComparer.OrdinalIgnoreCase); }
public TcpSocketChannelAndReactorCompatSpecs() { _clientGroup = new MultithreadEventLoopGroup(1); _serverBootstrap = new ServerBootstrap() .SetTransport(TransportType.Tcp) .SetDecoder(new LengthFieldFrameBasedDecoder(int.MaxValue, 0, 4, 0, 4)) .SetEncoder(new LengthFieldPrepender(4, false)).Build(); _clientBootstrap = new ClientBootstrap() .Channel <TcpSocketChannel>() .Group(_clientGroup) .Handler(new ActionChannelInitializer <TcpSocketChannel>(channel => { channel.Pipeline.AddLast(new LengthFieldBasedFrameDecoder(int.MaxValue, 0, 4, 0, 4, true)) .AddLast(new HeliosBackwardsCompatabilityLengthFramePrepender(4, false)) .AddLast(new ReadRecorderHandler(_received, _resetEvent, ReadCount)); })); }
public TcpSocketChannelAndReactorCompatSpecs() { _clientGroup = new MultithreadEventLoopGroup(1); _serverBootstrap = new ServerBootstrap() .SetTransport(TransportType.Tcp) .SetDecoder(new LengthFieldFrameBasedDecoder(int.MaxValue, 0, 4, 0, 4)) .SetEncoder(new LengthFieldPrepender(4, false)).Build(); _clientBootstrap = new ClientBootstrap() .Channel<TcpSocketChannel>() .Group(_clientGroup) .Handler(new ActionChannelInitializer<TcpSocketChannel>(channel => { channel.Pipeline.AddLast(new LengthFieldBasedFrameDecoder(int.MaxValue, 0, 4, 0, 4, true)) .AddLast(new HeliosBackwardsCompatabilityLengthFramePrepender(4, false)) .AddLast(new ReadRecorderHandler(_received, _resetEvent, ReadCount)); })); }
/// <summary> /// Initializes a new instance of the <see cref="StumpsServerInstance"/> class. /// </summary> /// <param name="serverFactory">The factory used to initialize new server instances.</param> /// <param name="serverId">The unique identifier of the Stumps server.</param> /// <param name="dataAccess">The data access provider used by the instance.</param> public StumpsServerInstance(IServerFactory serverFactory, string serverId, IDataAccess dataAccess) { _serverFactory = serverFactory ?? throw new ArgumentNullException(nameof(serverFactory)); this.ServerId = serverId; _lock = new ReaderWriterLockSlim(LockRecursionPolicy.NoRecursion); _dataAccess = dataAccess; // Setup the objects needed to keep track of Stumps. _stumpList = new List <StumpContract>(); _stumpReference = new Dictionary <string, StumpContract>(StringComparer.OrdinalIgnoreCase); // Initialize the server InitializeServer(); // Initialize the Stumps InitializeStumps(); }
static void Main(string[] args) { //1.确立通道传送方式 TcpClientChannel clientChannel = new TcpClientChannel(); ChannelServices.RegisterChannel(clientChannel, false); //因为客户端仅引用了IDemoClass,所以无法通过new 对象的方式创建远程对象。 //所以无法使用客户端注册远程对象(RemotingConfiguration.RegisterWellKnownClientType)。 //故而只能采用Activator.GetObject()方式来创建远程对象 //IDemoClass demo =(IDemoClass)Activator.GetObject(typeof(IDemoClass), "tcp://127.0.0.1:8501/RemovedDemo/ServerActivated"); //demo.ShowAppDomain(); //demo.ShowCount("Zhang"); IServerFactory serverFactory = (IServerFactory)Activator.GetObject(typeof(IServerFactory), "tcp://127.0.0.1:8501/RemovedDemo/ServerFactotyActivated"); IDemoClass demo = serverFactory.GetDemoClass(); demo.ShowAppDomain(); demo.ShowCount("Zhang"); Console.ReadLine(); }
public HttpServerFactory(IServerFactory serverFactory) { this.serverFactory = serverFactory; }
/// <summary> /// Initialize mock objects. /// </summary> public PoolTests() { _jobManagerFactory = Substitute.For<IJobManagerFactory>(); _jobTrackerFactory = Substitute.For<IJobTrackerFactory>(); _hashAlgorithmFactory = Substitute.For<IHashAlgorithmFactory>(); _shareManagerFactory = Substitute.For<IShareManagerFactory>(); _minerManagerFactory = Substitute.For<IMinerManagerFactory>(); _serverFactory = Substitute.For<IServerFactory>(); _serviceFactory = Substitute.For<IServiceFactory>(); _storageManagerFactory = Substitute.For<IStorageFactory>(); _globalConfigFactory = Substitute.For<IGlobalConfigFactory>(); _daemonClient = Substitute.For<IDaemonClient>(); _minerManager = Substitute.For<IMinerManager>(); _jobManager = Substitute.For<IJobManager>(); _jobTracker = Substitute.For<IJobTracker>(); _shareManager = Substitute.For<IShareManager>(); _miningServer = Substitute.For<IMiningServer>(); _rpcService = Substitute.For<IRpcService>(); _storage = Substitute.For<IStorage>(); }
protected PoolBase(IServerFactory serverFactory) { ServerFactory = serverFactory; }
public static IServer CreateHttp(this IServerFactory factory, IHttpRequestDelegate channel, IScheduler scheduler) { var f = new HttpServerFactory(factory); return(f.Create(channel, scheduler)); }
public WebHostBuilder UseServer(IServerFactory factory) { _serverFactory = factory; return(this); }
public static void Register(IServerFactory factory) { _setting.Register(factory); }
public static IServer CreateGate(this IServerFactory factory, AppFunc app, IScheduler scheduler) { return(CreateGate(factory, app, scheduler, null)); }
public TychaiaServerWorld( IServerEntityFactory serverEntityFactory, IServerFactory serverFactory, IPositionScaleTranslation positionScaleTranslation, IPredeterminedChunkPositions predeterminedChunkPositions, TychaiaServer server, ServerChunkManager serverChunkManager) { this.m_ServerEntityFactory = serverEntityFactory; this.m_ServerFactory = serverFactory; this.m_PositionScaleTranslation = positionScaleTranslation; this.m_PredeterminedChunkPositions = predeterminedChunkPositions; this.m_Server = server; this.m_ConnectedClients = new Dictionary<MxClient, ServerClientManager>(); this.m_UniqueIDIncrementer = 1; // TODO: Move server chunk manager into entities list. this.m_ServerChunkManager = serverChunkManager; this.m_Server.ListenForMessage("user input", this.OnUserInput); this.m_Server.ListenForMessage( "join", (client, playerName) => { // The client will repeatedly send join messages until we confirm. if (this.m_ConnectedClients.ContainsKey(client)) { return; } var uniqueID = this.m_UniqueIDIncrementer++; Console.WriteLine("Detected \"" + Encoding.ASCII.GetString(playerName) + "\" has joined"); this.m_Server.SendMessage("join confirm", BitConverter.GetBytes(uniqueID)); var manager = this.m_ServerFactory.CreateServerClientManager( this, this.m_Server, uniqueID, Encoding.ASCII.GetString(playerName), client); this.m_ConnectedClients.Add( client, manager); this.AddPlayer(client, Encoding.ASCII.GetString(playerName)); }); server.ListenForMessage( "change name", (client, newPlayerName) => { // Check to make sure this client is joined. if (!this.m_ConnectedClients.ContainsKey(client)) { return; } var existingName = this.m_ConnectedClients[client].PlayerName; var newName = Encoding.ASCII.GetString(newPlayerName); this.m_ConnectedClients[client].PlayerName = newName; Console.WriteLine("\"" + existingName + "\" has changed their name to \"" + newName + "\""); this.ChangePlayerName(client, newName); }); }
internal ListenerContext(Socket socket, int maxConnections, IServerFactory serverFactory) { ListenSocket = socket; MaxConnections = maxConnections; ServerFactory = serverFactory; }
public IWebHostBuilder UseServer(IServerFactory factory) { _builder.UseServer(factory); return(this); }
/// <summary> /// Initializes a new instance of the <see cref="Pool" /> class. /// </summary> /// <param name="hashAlgorithmFactory">The hash algorithm factory.</param> /// <param name="serverFactory">The server factory.</param> /// <param name="serviceFactory">The service factory.</param> /// <param name="client">The client.</param> /// <param name="minerManagerFactory">The miner manager factory.</param> /// <param name="jobTrackerFactory"></param> /// <param name="jobManagerFactory">The job manager factory.</param> /// <param name="shareManagerFactory">The share manager factory.</param> /// <param name="storageManagerFactory"></param> /// <param name="globalConfigFactory"></param> public Pool( IHashAlgorithmFactory hashAlgorithmFactory, IServerFactory serverFactory, IServiceFactory serviceFactory, IDaemonClient client, IMinerManagerFactory minerManagerFactory, IJobTrackerFactory jobTrackerFactory, IJobManagerFactory jobManagerFactory, IShareManagerFactory shareManagerFactory, IStorageFactory storageManagerFactory, IGlobalConfigFactory globalConfigFactory) { Enforce.ArgumentNotNull(hashAlgorithmFactory, "IHashAlgorithmFactory"); Enforce.ArgumentNotNull(serverFactory, "IServerFactory"); Enforce.ArgumentNotNull(serviceFactory, "IServiceFactory"); Enforce.ArgumentNotNull(client, "IDaemonClient"); Enforce.ArgumentNotNull(minerManagerFactory, "IMinerManagerFactory"); Enforce.ArgumentNotNull(jobTrackerFactory, "IJobTrackerFactory"); Enforce.ArgumentNotNull(jobManagerFactory, "IJobManagerFactory"); Enforce.ArgumentNotNull(shareManagerFactory, "IShareManagerFactory"); Enforce.ArgumentNotNull(storageManagerFactory, "IStorageFactory"); Enforce.ArgumentNotNull(globalConfigFactory, "IGlobalConfigFactory"); _daemonClient = client; _minerManagerFactory = minerManagerFactory; _jobManagerFactory = jobManagerFactory; _jobTrackerFactory = jobTrackerFactory; _shareManagerFactory = shareManagerFactory; _serverFactory = serverFactory; _serviceFactory = serviceFactory; _hashAlgorithmFactory = hashAlgorithmFactory; _storageManagerFactory = storageManagerFactory; _globalConfigFactory = globalConfigFactory; GenerateInstanceId(); }
public IWebHostBuilder UseServer(IServerFactory factory) { services.AddSingleton <IServerFactory>(factory); return(this); }
public IosHttpServerFactory(IServerFactory serverFactory, IConnectionWatcher connWatcher) { this.serverFactory = serverFactory; this.connWatcher = connWatcher; }
public IServerHostBuilder <TContext> UseServer(IServerFactory factory) { throw new NotImplementedException(); }
static void Main(string[] args) { Console.ForegroundColor = ConsoleColor.Green; ConsoleUtil.SetConsoleCtrlHandler(new ConsoleUtil.ControlCtrlDelegate(HandlerRoutine), true); bool success = true; Console.WriteLine("正在初始化服务程序......"); IObjectBuilder builder = new TypeCreator(); _serverFactory = new ServerFactory(); try { GlobalConfig gc = GlobalConfigTool.Load(); foreach (ServerSuperIO.Config.Server serverCfg in gc.Servers) { IServer server = _serverFactory.CreateServer(serverCfg.ServerConfig); server.AddDeviceCompleted += server_AddDeviceCompleted; server.DeleteDeviceCompleted += server_DeleteDeviceCompleted; server.Start(); _serverFactory.AddServer(server); foreach (Config.Device devCfg in serverCfg.Devices) { try { IRunDevice runDev = builder.BuildUp <IRunDevice>(devCfg.AssemblyFile, devCfg.Instance); runDev.DeviceParameter.DeviceID = devCfg.DeviceID; runDev.DeviceDynamic.DeviceID = devCfg.DeviceID; runDev.CommunicateType = devCfg.CommunicateType; runDev.Initialize(devCfg.DeviceID); if (server.AddDevice(runDev) != devCfg.DeviceID) { Console.WriteLine("增加设备:" + devCfg.DeviceID + " 失败!"); } } catch (Exception ex) { Console.WriteLine(ex.Message); continue; } } } } catch (Exception ex) { success = false; Console.WriteLine(ex.Message); } if (success) { Console.WriteLine("初始化服务程序完成"); } while ("exit" == Console.ReadLine()) { _serverFactory.RemoveAllServer(); break; } }
public static IServer CreateIosHttp(this IServerFactory factory, IHttpRequestDelegate channel, IConnectionWatcher connWatcher, IScheduler scheduler) { var f = new IosHttpServerFactory(factory, connWatcher); return(f.Create(channel, scheduler)); }
public MoneroPool(IServerFactory serverFactory) : base(serverFactory) { _logger = Log.ForContext <MoneroPool>().ForContext("Pool", "XMR"); }
/// <summary> /// Create server console host /// </summary> /// <param name="factory"></param> /// <param name="logger"></param> public ServerConsoleHost(IServerFactory factory, ILogger logger) { _logger = logger ?? throw new ArgumentNullException(nameof(logger)); _factory = factory ?? throw new ArgumentNullException(nameof(factory)); }
public TestServerFactory(IServerFactory wrappedServerFactory) { _wrappedServerFactory = wrappedServerFactory; }