Exemple #1
0
 public static async Task HandleServerNewObjectAvailable(ServerObjectAvailabilityChanged packet,
                                                         AERoutingClient context)
 {
     if (packet.Available)
     {
         context.ObjectRepository.AddObject(packet.RoutingObject);
     }
     else
     {
         context.ObjectRepository.RemoveObject(packet.RoutingObject.Guid);
     }
 }
Exemple #2
0
        public static async Task HandleClientHandshakeBegin(ClientHandshakeBeginPacket packet,
                                                            AERoutingClient context)
        {
            //await HandshakeHandlers.ClientHandshakeBeginHandler( packet, context );

            if (!HandshakeHandlers.ValidateHandshakeProtocol(packet))
            {
                Console.WriteLine(
                    $"Invalid protocol (got: {packet.Protocol}) (exp: {Constants.LatestAEProtocolVersion})");
                context.Disconnect();
                return;
            }

            if (!HandshakeHandlers.ValidateHandshakeAuthentication(packet))
            {
                Console.WriteLine(
                    $"Authentication failure (got: {packet.Password}) (exp: {Constants._TEMP_RouterAuthPassword})");
                context.Disconnect();
                return;
            }

            context.Authenticated      = true;
            context.ComponentData      = packet.Component;
            context.ComponentData.Guid = Guid.NewGuid();

            Console.WriteLine($"Successfully authenticated {context.ComponentData.Guid}");

            var clients =
                MasterRouterServices.RemoteClients.GetClients(
                    item =>
                    SendToOtherComponentsPredicate(context,
                                                   item));

            var snoap = new ServerObjectAvailabilityChanged
            {
                RoutingObject = context.ComponentData,
                Available     = true
            };

            await context.SendPayloadToComponents(clients, snoap.PacketId, snoap.FinalizePacket().Payload);
        }