public static async Task HandleServerNewObjectAvailable(ServerObjectAvailabilityChanged packet, AERoutingClient context) { if (packet.Available) { context.ObjectRepository.AddObject(packet.RoutingObject); } else { context.ObjectRepository.RemoveObject(packet.RoutingObject.Guid); } }
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); }