/// <inheritdoc /> public AuthenticationServerApplicationBase([NotNull] NetworkAddressInfo serverAddress, [NotNull] ILog logger) : base(serverAddress) { if (serverAddress == null) { throw new ArgumentNullException(nameof(serverAddress)); } if (logger == null) { throw new ArgumentNullException(nameof(logger)); } Logger = logger; Serializer = new FreecraftCoreGladNetSerializerAdapter(CreateSerializer()); ServiceContainer = BuildServiceContainer(); }
private async Task InitializeNetworkingClient() { ContainerBuilder builder = new ContainerBuilder(); EncryptionLazyWithoutKeyDecorator <uint> encrypt = new EncryptionLazyWithoutKeyDecorator <uint>(val => new PatchServerCryptoProvider(PatchEncryptionKeyFactory.Create(val)), 4); EncryptionLazyWithoutKeyDecorator <uint> decrypt = new EncryptionLazyWithoutKeyDecorator <uint>(val => new PatchServerCryptoProvider(PatchEncryptionKeyFactory.Create(val)), 4); IFullCryptoInitializationService <uint> intializers = new SeperateAggregateCryptoInitializationService <uint>(encrypt, decrypt); builder.RegisterInstance(intializers) .As <IFullCryptoInitializationService <uint> >(); INetworkSerializationService serializerService = new FreecraftCoreGladNetSerializerAdapter(CreateSerializerService()); //Configurs and builds the clients without all the //relevant decorators IManagedNetworkClient <PSOBBPatchPacketPayloadClient, PSOBBPatchPacketPayloadServer> client = new DotNetTcpClientNetworkClient() .AddCryptHandling(encrypt, decrypt) .AddHeaderReading <PSOBBPacketHeader>(serializerService, 2) .AddNetworkMessageReading(serializerService) .For <PSOBBPatchPacketPayloadServer, PSOBBPatchPacketPayloadClient, IPacketPayload>(null) .AddReadBufferClearing() .Build() .AsManaged(); builder.RegisterInstance(client) .As <IManagedNetworkClient <PSOBBPatchPacketPayloadClient, PSOBBPatchPacketPayloadServer> >(); //Patch welcome message builder.RegisterHandler <PatchWelcomeMessageHandler, PatchingWelcomePayload>(); builder.RegisterHandler <PatchingLoginReadyMessageHandler, PatchingReadyForLoginRequestPayload>(); builder.RegisterHandler <PatchingRedirectionMessageHandler, PatchingRedirectPayload>(); builder.RegisterHandler <PatchingInfoDoneMessageHandler, PatchingInfoRequestDonePayload>(async h => { await Dispatcher.InvokeAsync(() => PlayButton.DataContext = h); }); builder.RegisterHandler <PatchMessageMessageHandler, PatchingMessagePayload>(async h => { await Dispatcher.InvokeAsync(() => PatchNotesData.DataContext = h); }); IContainer container = builder.Build(); IEnumerable <IPeerMessageHandler <PSOBBPatchPacketPayloadServer, PSOBBPatchPacketPayloadClient> > Handlers = container.Resolve <IEnumerable <IPeerMessageHandler <PSOBBPatchPacketPayloadServer, PSOBBPatchPacketPayloadClient> > >(); IPeerMessageContextFactory MessageContextFactory = new DefaultMessageContextFactory(); await client.ConnectAsync("158.69.215.131", 11000); while (client.isConnected) { NetworkIncomingMessage <PSOBBPatchPacketPayloadServer> message = await client.ReadMessageAsync(); Console.WriteLine($"Recieved {message.Payload?.GetType().Name}"); foreach (var h in Handlers) { //TODO: Fix this and enable request service if (await h.TryHandleMessage(MessageContextFactory.Create(client, client, null), message)) { break; } } } }