public bool Connect() { if (internalLidgrenNetworkClient.Status != NetPeerStatus.NotRunning) { //call disconnection to cleanup the current running session Disconnect(); } //Must call start first internalLidgrenNetworkClient.Start(); NetConnection connection = internalLidgrenNetworkClient.Connect(connectionInfo.ServerIp, connectionInfo.RemotePort); if (connection == null) { throw new InvalidOperationException($"Could not connect and create a {nameof(NetConnection)}."); } //Now that we have the netconnection we can initialize the sendservice NetworkSendService = new LidgrenClientNetworkMessageRouterService(new LidgrenNetworkMessageFactory(), connection, serializer); if (connection == null) { return(false); } //Create a new managed thread managedNetworkThread = new ManagedLidgrenNetworkThread(serializer, new LidgrenClientMessageContextFactory(deserializer), new ClientSendServiceSelectionStrategy(this.NetworkSendService), e => Debug.LogError(e.Message + "StackTrace: " + e.StackTrace)); //Start the thread and give the peer the context managedNetworkThread.Start(internalLidgrenNetworkClient); return(true); }
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); }