internal IAdminPacketService Create()
        {
            IEnumerable <Type> packetTransformerTypes = new AssemblyTypeFinder(Assembly.GetExecutingAssembly(), $"{GetType().Namespace}.PacketTransformers")
                                                        .WithTypeMatcher(new ClassTypeMatcher())
                                                        .WithTypeMatcher(ImplementsTypeMatcher.Create <IPacketTransformer>())
                                                        .Find();

            IEnumerable <Type> messageTransformerTypes = new AssemblyTypeFinder(Assembly.GetExecutingAssembly(), $"{GetType().Namespace}.MessageTransformers")
                                                         .WithTypeMatcher(new ClassTypeMatcher())
                                                         .WithTypeMatcher(ImplementsTypeMatcher.Create <IMessageTransformer>())
                                                         .Find();

            IPacketTransformer[]  packetTransformers  = new IPacketTransformer[packetTransformerTypes.Count()];
            IMessageTransformer[] messageTransformers = new IMessageTransformer[messageTransformerTypes.Count()];

            for (int i = 0; i < packetTransformers.Length; ++i)
            {
                packetTransformers[i] = (IPacketTransformer)Activator.CreateInstance(packetTransformerTypes.ElementAt(i));
            }

            for (int i = 0; i < messageTransformers.Length; ++i)
            {
                messageTransformers[i] = (IMessageTransformer)Activator.CreateInstance(messageTransformerTypes.ElementAt(i));
            }

            return(new AdminPacketService(packetTransformers, messageTransformers));
        }
        public void AddTransformer(IMessageTransformer messageTransformer)
        {
            messageTransformer.Initialize(dataStoreManager);
            messageTransformers.Add(messageTransformer);

            var instance = messageTransformer as IVariableFallbackHandler;
            if (instance != null)
                variableHandler.AddFallbackHandler(instance);
        }
 private MessageRouteRule(string name, Type messageType, bool includeDrivedMessageTypes, Type handlerType, IMessageConditionValidator preCondition, IMessageTransformer transformer, IMessageConditionValidator postCondition)
 {
     Name        = name;
     MessageType = messageType;
     IncludeDrivedMessageTypes = includeDrivedMessageTypes;
     HandlerType   = handlerType;
     PreCondition  = preCondition;
     Transformer   = transformer;
     PostCondition = postCondition;
 }
예제 #4
0
        public void AddTransformer(IMessageTransformer messageTransformer)
        {
            messageTransformer.Initialize(dataStoreManager);
            messageTransformers.Add(messageTransformer);

            var instance = messageTransformer as IVariableFallbackHandler;

            if (instance != null)
            {
                variableHandler.AddFallbackHandler(instance);
            }
        }
        public static MessageRouteRule Create <TTransformerInputMessage, TTransformerOutputMessage, TMessageHandler>(
            string name, bool includeSubMessageTypes, IMessageConditionValidator <TTransformerInputMessage> preConditionValidator,
            IMessageTransformer <TTransformerInputMessage, TTransformerOutputMessage> transformer, IMessageConditionValidator <TMessageHandler, TTransformerOutputMessage> postConditionValidator)

            where TTransformerInputMessage : class, IMessage
            where TTransformerOutputMessage : class, IMessage
            where TMessageHandler : class, IMessageHandler <TTransformerOutputMessage>
        {
            var route = new MessageRouteRule(name, typeof(TTransformerOutputMessage), includeSubMessageTypes, typeof(TMessageHandler),
                                             preConditionValidator, transformer, postConditionValidator);

            return(route);
        }
예제 #6
0
파일: Flow.cs 프로젝트: lulzzz/SharpBus
 public Flow Transform(IMessageTransformer transformer)
 {
     this.steps.Add(msg => transformer.Transform(msg));
     return(this);
 }
예제 #7
0
 private void ThisAddIn_Startup(object sender, EventArgs e)
 {
     _phonePatterns = ReadPhonePatternsFromConfig().ToArray();
     _transformer = new SimpleMessageTransformer(_phonePatterns);
     _activeExplorer = Application.ActiveExplorer();
     _activeExplorer.SelectionChange += ActiveExplorerSelectionChange;
 }