/// <summary> /// Configures remote execution framework. /// Registers all supported transport layer providers. /// </summary> public static void Configure(ILidgrenCryptoProviderResolver providerResolver) { DefaultConfig.MessageSerializer = new BinaryMessageSerializer(); DefaultConfig.MessageFactory = new DefaultMessageFactory(); DefaultConfig.RemoteExecutorFactory = new RemoteExecutorFactory(); DefaultConfig.TaskScheduler = new AsyncTaskScheduler(); TransportLayerResolver.Register(new LidgrenProvider(providerResolver)); InterfaceResolver.Singleton.RegisterInterface(typeof(IAuthenticator)); InterfaceResolver.Singleton.RegisterInterface(typeof(ISessionEncryptedCallback)); }
private IServerEndpoint CreateServer(ILidgrenCryptoProviderResolver providerResolver) { DefaultConfig.MessageSerializer = new BinaryMessageSerializer(); DefaultConfig.MessageFactory = new DefaultMessageFactory(); DefaultConfig.RemoteExecutorFactory = new RemoteExecutorFactory(); DefaultConfig.TaskScheduler = new AsyncTaskScheduler(); TransportLayerResolver.Register(new LidgrenProvider(providerResolver)); _connectionListener = new LidgrenServerConnectionListener(_applicationId, _listenAddress, _port, new BinaryMessageSerializer(), providerResolver); _dispatcher = new OperationDispatcher(); _dispatcher.RegisterHandler <ICalculator>(new Calculator()); _dispatcher.RegisterHandler <IGreeter>(new Greeter()); IServerEndpoint server = new GenericServerEndpoint(_connectionListener, new ServerConfig(), () => _dispatcher); server.Start(); return(server); }
/// <summary> /// Creates listener instance. /// </summary> /// <param name="applicationId">Application id that would be used to accept/reject incoming connections.</param> /// <param name="listenAddress">IP address on which listener would be listening for incoming connections. Use 0.0.0.0 to listen on all network interfaces.</param> /// <param name="port">Port on which listener would be listening for incoming connections.</param> /// <param name="serializer">Message serializer.</param> /// <param name="cryptoProviderResolver">Crypto provider resolver.</param> public LidgrenServerConnectionListener(string applicationId, string listenAddress, ushort port, IMessageSerializer serializer, ILidgrenCryptoProviderResolver cryptoProviderResolver) { _cryptoProviderResolver = cryptoProviderResolver; var netConfig = new NetPeerConfiguration(applicationId) { MaximumConnections = int.MaxValue, Port = port, LocalAddress = IPAddress.Parse(listenAddress), ConnectionTimeout = (float)DefaultConfig.Timeout.TotalSeconds }; _serializer = serializer; _netServer = new NetServer(netConfig); _messageRouter = new MessageRouter(); _messageRouter.ConnectionClosed += HandleClosedConnection; _messageRouter.ConnectionOpened += HandleNewConnection; _messageRouter.DataReceived += HandleReceivedData; BroadcastChannel = new LidgrenBroadcastChannel(_netServer, serializer); }
private ClientConnection CreateClientConnection(ILidgrenCryptoProviderResolver provider) { return(new ClientConnection(new LidgrenClientChannel(_applicationId, _host, _port, new BinaryMessageSerializer(), provider), new OperationDispatcher(), new ConnectionConfig())); }
/// <summary> /// Normal constructor; will use specified <see cref="ILidgrenCryptoProviderResolver"/>. /// </summary> /// <param name="cryptoProviderResolver">Provider to map <see cref="IPEndPoint"/>s to their corresponding <see cref="NetEncryption"/>s.</param> /// <param name="messageSerializer">Message serializer to use.</param> public SharedLidgrenProvider(ILidgrenCryptoProviderResolver cryptoProviderResolver, IMessageSerializer messageSerializer) : base(cryptoProviderResolver, messageSerializer) { }
/// <summary> /// Normal constructor; will use specified <see cref="ILidgrenCryptoProviderResolver"/>. /// </summary> /// <param name="cryptoProviderResolver">Provider to map <see cref="IPEndPoint"/>s to their corresponding <see cref="NetEncryption"/>s</param> public SharedLidgrenProvider(ILidgrenCryptoProviderResolver cryptoProviderResolver) : base(cryptoProviderResolver) { }
/// <summary> /// Normal constructor; will use specified <see cref="ILidgrenCryptoProviderResolver"/>. /// </summary> /// <param name="cryptoProviderResolver">Provider to map <see cref="IPEndPoint"/>s to their corresponding <see cref="NetEncryption"/>s</param> public DurableLidgrenProvider(ILidgrenCryptoProviderResolver cryptoProviderResolver) : base(cryptoProviderResolver) { }
/// <summary> /// Normal constructor; will use specified <see cref="ILidgrenCryptoProviderResolver"/>. /// </summary> /// <param name="cryptoProviderResolver">Provider to map <see cref="IPEndPoint"/>s to their corresponding <see cref="NetEncryption"/>s.</param> /// <param name="messageSerializer">Message serializer to use.</param> public LidgrenProvider(ILidgrenCryptoProviderResolver cryptoProviderResolver, IMessageSerializer messageSerializer) { CryptoProviderResolver = cryptoProviderResolver; _serializer = messageSerializer; }
/// <summary> /// Normal constructor; will use specified <see cref="ILidgrenCryptoProviderResolver"/>. /// </summary> /// <param name="cryptoProviderResolver">Provider to map <see cref="IPEndPoint"/>s to their corresponding <see cref="NetEncryption"/>s</param> public LidgrenProvider(ILidgrenCryptoProviderResolver cryptoProviderResolver) : this(cryptoProviderResolver, DefaultConfig.MessageSerializer) { }
/// <summary> /// Creates channel instance with specified message serializer. /// </summary> /// <param name="serializer">Message serializer.</param> /// <param name="cryptoProviderResolver">Provider to map <see cref="IPEndPoint"/>s to their corresponding <see cref="NetEncryption"/>s</param> public LidgrenDuplexChannel(IMessageSerializer serializer, ILidgrenCryptoProviderResolver cryptoProviderResolver) : base(serializer) { CryptoProviderResolver = cryptoProviderResolver; }
/// <summary> /// Creates client channel instance. /// </summary> /// <param name="applicationId">Application id that has to match to one used by <see cref="LidgrenServerConnectionListener"/>.</param> /// <param name="host">Host to connect to.</param> /// <param name="port">Port to connect to.</param> /// <param name="serializer">Message serializer.</param> /// <param name="cryptoProviderResolver">Crypto provider resolver.</param> public LidgrenClientChannel(string applicationId, string host, ushort port, IMessageSerializer serializer, ILidgrenCryptoProviderResolver cryptoProviderResolver) : base(serializer, cryptoProviderResolver) { _host = host; _port = port; _client = new NetClient(new NetPeerConfiguration(applicationId) { ConnectionTimeout = (float)DefaultConfig.Timeout.TotalSeconds }); _messageRouter = new MessageRouter(); _messageRouter.DataReceived += HandleIncomingMessage; _messageRouter.ConnectionClosed += c => OnConnectionClose(); }