/// <summary> /// Creates new websocket connector and registers IWebSocketBus to the MSDI container. /// </summary> public static IServiceCollection AddWebSocketClient <TIdentifer>(this IServiceCollection services, Action <HorseWebSocketBuilder> config) { HorseWebSocketBuilder <TIdentifer> builder = new HorseWebSocketBuilder <TIdentifer>(); config(builder); WebSocketModelConnector <TIdentifer> connector = (WebSocketModelConnector <TIdentifer>)builder.Build(); AddMSDIHandlers(services, connector, builder); services.AddSingleton(connector); services.AddSingleton <IWebSocketBus <TIdentifer> >(connector); return(services); }
private static void AddMSDIHandlers(IServiceCollection services, WebSocketModelConnector connector, HorseWebSocketBuilder builder) { foreach (Tuple <ServiceLifetime, Type> pair in builder.AssembyConsumers) { List <Type> types = connector.Observer.ResolveWebSocketHandlerTypes(pair.Item2); foreach (Type type in types) { AddHandlerIntoMSDI(services, pair.Item1, type); } } foreach (Tuple <ServiceLifetime, Type, Type> tuple in builder.IndividualConsumers) { AddHandlerIntoMSDI(services, tuple.Item1, tuple.Item2); } }