コード例 #1
1
ファイル: Global.asax.cs プロジェクト: mikkeldamm/cqrs-es-ddd
        private static void RegisterCommands(Container container)
        {
            var eventDelegator = new EventBus();
            var eventStore = new EventStore(eventDelegator);
            var aggregateFactory = new AggregateFactory();
            var commandProcessor = new CommandProcessor(aggregateFactory, eventStore);

            container.RegisterSingleton<IProcessCommands>(() => commandProcessor);
        }
コード例 #2
1
 public AppWindowViewModel()
 {
    _eventBus = new EventBus();
    _viewModels = new IViewModel[]
                         {
                            new LaunchViewModel(_eventBus),
                            new ExecuteViewModel(_eventBus),
                            new SettingsViewModel(_eventBus)
                         };
    ContentViewModel = new Observable<IContentViewModel>();
 }
コード例 #3
0
        private void AddFileWritingListenerIfConfigured(EventBus bus)
        {
            if (string.IsNullOrEmpty(_settings.OutputFileFormat))
                return;

            if (string.IsNullOrEmpty(_settings.OutputFile))
                return;

            var outputFile = _settings.OutputFile;

            var fileWriter = new FileWriter(outputFile, true);

            switch (_settings.OutputFileFormat.ToLower())
            {
                case "xml":

                    bus.Register(new XmlReportListener(fileWriter));
                    break;
                case "spark":
                    bus.Register(new SparkReportListener(fileWriter, _settings.OutputFileTemplate));
                    break;
                default:
                    throw new ConfigurationErrorsException(
                        string.Format("'{0} is not a valid output file format.'", _settings.OutputFileFormat));
            }
        }
コード例 #4
0
        static void Main(string[] args)
        {
            EventBus bus = new EventBus();
            _eventStore = new MemoryEventStore(bus);

            IEventSourcedRepository<Column> eventSourcedRepository = UseSnapshotting
                ? CreateSnapshottingRepository(EventsPerSnapshot)
                : CreateNonSnapshottingRepository();

            ColumnCommandHandler commandHandler = new ColumnCommandHandler(eventSourcedRepository);
            _columnRepository = new MemoryRepository<ColumnDTO>();
            _calculationRepository = new MemoryRepository<CalculationDTO>();
            ColumnView columnView = new ColumnView(_columnRepository);
            CalculationView calculationView = new CalculationView(_calculationRepository);

            //bus.Subscribe<IEvent>(ev => _log.Information("New Event: {@Event}", ev));

            bus.Subscribe<ColumnCreated>(columnView.Handle);
            bus.Subscribe<ColumnRenamed>(columnView.Handle);
            bus.Subscribe<ColumnDataTypeChanged>(columnView.Handle);
            bus.Subscribe<ColumnMadePrimary>(columnView.Handle);
            bus.Subscribe<ColumnPrimaryCleared>(columnView.Handle);
            bus.Subscribe<CalculationAdded>(columnView.Handle);
            bus.Subscribe<CalculationRemoved>(columnView.Handle);

            bus.Subscribe<CalculationAdded>(calculationView.Handle);
            bus.Subscribe<CalculationRemoved>(calculationView.Handle);
            bus.Subscribe<CalculationOperandChanged>(calculationView.Handle);
            bus.Subscribe<CalculationOperatorChanged>(calculationView.Handle);

            PerformSomeActions(commandHandler);
            ShowReadModel();

            PerformLotsOfActions(commandHandler);
        }
        public void SetUp()
        {
            persistentConnection = MockRepository.GenerateStub<IPersistentConnection>();
            channel = MockRepository.GenerateStub<IModel>();
            var eventBus = new EventBus();
            var configuration = new ConnectionConfiguration();

            var shutdownArgs = new ShutdownEventArgs(
                ShutdownInitiator.Peer, 
                AmqpException.ConnectionClosed,
                "connection closed by peer");
            var exception = new OperationInterruptedException(shutdownArgs);
            var first = true;

            persistentConnection.Stub(x => x.CreateModel()).WhenCalled(x =>
                {
                    if (first)
                    {
                        first = false;
                        throw exception;
                    }
                    x.ReturnValue = channel;
                });

            var logger = MockRepository.GenerateStub<IEasyNetQLogger>();

            persistentChannel = new PersistentChannel(persistentConnection, logger, configuration, eventBus);

            new Timer(_ => eventBus.Publish(new ConnectionCreatedEvent())).Change(10, Timeout.Infinite);

            persistentChannel.InvokeChannelAction(x => x.ExchangeDeclare("MyExchange", "direct"));
        }
コード例 #6
0
        public void SetUp()
        {
            //var logger = new ConsoleLogger();
            var logger = MockRepository.GenerateStub<IEasyNetQLogger>();
            var consumerErrorStrategy = MockRepository.GenerateStub<IConsumerErrorStrategy>();
            var eventBus = new EventBus();

            handlerRunner = new HandlerRunner(logger, consumerErrorStrategy, eventBus);

            Func<byte[], MessageProperties, MessageReceivedInfo, Task> userHandler = (body, properties, info) => 
                Task.Factory.StartNew(() =>
                    {
                        deliveredBody = body;
                        deliveredProperties = properties;
                        deliveredInfo = info;
                    });

            var consumer = MockRepository.GenerateStub<IBasicConsumer>();
            channel = MockRepository.GenerateStub<IModel>();
            consumer.Stub(x => x.Model).Return(channel).Repeat.Any();

            var context = new ConsumerExecutionContext(
                userHandler, messageInfo, messageProperties, messageBody, consumer);

            var autoResetEvent = new AutoResetEvent(false);
            eventBus.Subscribe<AckEvent>(x => autoResetEvent.Set());

            handlerRunner.InvokeUserMessageHandler(context);

            autoResetEvent.WaitOne(1000);
        }
コード例 #7
0
ファイル: MinGH.cs プロジェクト: huming2207/ghgame
        /// <summary>
        /// Allows the game to perform any initialization it needs to before starting to run.
        /// This is where it can query for any required services and load any non-graphic
        /// related content.  Calling base.Initialize will enumerate through any components
        /// and initialize them as well.
        /// </summary>
        protected override void Initialize()
        {
            gameConfiguration = new GameConfiguration("config.xml");
            if (gameConfiguration.fullscreen)
            {
                graphics.ToggleFullScreen();
                graphics.PreferredBackBufferWidth = 1920;
                graphics.PreferredBackBufferHeight = 1080;

            }
            else
            {
                graphics.PreferredBackBufferWidth = 1024;
                graphics.PreferredBackBufferHeight = 768;
            }

            graphics.ApplyChanges();

            Window.Title = "MinGH";
            IsMouseVisible = true;
            FlatRedBallServices.InitializeFlatRedBall(this, graphics);
            ScreenManager.Start(typeof(MainMenu).FullName);

            // Feels sloppy, but is how event listeners/handlers are set
            EventBus<ScreenChange>.EventHandler screenChange =
                new EventBus<ScreenChange>.EventHandler(ChangeGameState);
            EventBus<ScreenChange>.instance.Event += screenChange;

            base.Initialize();
        }
コード例 #8
0
    public static EventBus GetInstance()
    {
        if (instance == null)
            instance = new EventBus();

        return instance;
    }
コード例 #9
0
ファイル: MailWindow.xaml.cs プロジェクト: ysmyslov/MicroMail
        public MailWindow(EventBus eventBus)
        {
            _eventBus = eventBus;
            InitializeComponent();

            Unloaded += UnloadedHandler;
            MessageWebView.Navigated += MessageWebViewOnNavigated;
        }
コード例 #10
0
ファイル: Suburbia.cs プロジェクト: dpekar/suburbia
    private Suburbia()
    {
        m_eventBus = new EventBus ();

        m_eventBus.AddHandler(EventEndOfTurn.TYPE, this);
        m_eventBus.AddHandler(EventLastTurn.TYPE, this);
        m_eventBus.AddHandler(EventEndOfGame.TYPE, this);
    }
コード例 #11
0
ファイル: TestFixture.cs プロジェクト: pawelpabich/storevil
        protected void BeforeAll()
        {
            _eventBus = StorEvilEvents.Bus;

            _storyContext = TestSession.SessionContext(GetType().Assembly.Location).GetContextForStory();
            _interpreter = new StandardScenarioInterpreter();
            _scenarioLineExecuter = new ScenarioLineExecuter(_interpreter, _eventBus);
        }
コード例 #12
0
ファイル: EventBusTest.cs プロジェクト: mbenford/EasyEventBus
        public async void Throws_An_Exception_If_A_Null_Event_Data_Is_Provided_Asynchronously()
        {
            // Arrange
            var publicationStrategyMock = new Mock<IPublicationStrategy>();
            var sut = new EventBus(publicationStrategyMock.Object);

            // Act/Assert
            await Assert.ThrowsAsync<ArgumentNullException>(() => sut.PublishAsync((object)null));
        }
コード例 #13
0
 public FinalizeService(EventBus bus)
 {
     _bus = bus;
     InstanceCounter++;
     _bus.OnNext(new EventModel
     {
         Message = $"Create finalize service instance (counter {InstanceCounter})",
         EventType = this.GetType()
     });
 }
コード例 #14
0
 public void SetUp()
 {
     var logger = new ConsoleLogger();
     var eventBus = new EventBus();
     var parser = new ConnectionStringParser();
     var configuration = parser.Parse("host=localhost");
     var hostSelectionStrategy = new RandomClusterHostSelectionStrategy<ConnectionFactoryInfo>();
     var connectionFactory = new ConnectionFactoryWrapper(configuration, hostSelectionStrategy);
     connection = new PersistentConnection(connectionFactory, logger, eventBus);
     persistentChannel = new PersistentChannel(connection, logger, configuration, new EventBus());
 }
コード例 #15
0
      public LaunchViewModel(EventBus eventBus)
      {
         _eventBus = eventBus;

         Path = new Observable<string>();
         History = new ObservableCollection<SolutionSettings.HistoryItem>();
         BrowseCommand = new RelayCommand(Browse);
         CreateSolutionCommand = new RelayCommand(CreateSolution, CanCreateSolution);
         ConfigureExistingCommand = new RelayCommand<SolutionSettings.HistoryItem>(ConfigureExisting);
         ExecuteExistingCommand = new RelayCommand<SolutionSettings.HistoryItem>(RunExisting);
      }
コード例 #16
0
        public void TestHandlersForAChildClassShouldNotBeCalledWhenParentClassIsSent()
        {
            var eventBus = new EventBus();
            var testMessage = new EmptyTestMessage();

            eventBus.Register((ChildEmptyTestMessage message) => {
                throw new Exception("Handlers for a class should not be called when messages of a parent class are sent");
            });

            eventBus.Send(testMessage);
        }
コード例 #17
0
            public void tryingToRaiseAnEvent()
            {
                var bus = new EventBus();

                bus.specificSubscriber += subscribingMethod;

                var @event = new MyEvent();
                bus.publish(@event);

                @event.SubscriberWasCalled.Should().BeTrue();
            }
コード例 #18
0
      public SettingsViewModel(EventBus eventBus)
      {
         _eventBus = eventBus;

         Fixie = new Observable<FixieViewModel>();
         MsBuild = new Observable<MsBuildViewModel>();
         Projects = new Observable<IEnumerable<ProjectViewModel>>();
         Visible = new Observable<bool>();

         AcceptCommand = new RelayCommand(Accept);
         CancelCommand = new RelayCommand(Cancel);
      }
コード例 #19
0
        public void SetUp()
        {
            var eventBus = new EventBus();
            var logger = new ConsoleLogger();
            var parser = new ConnectionStringParser();
            var configuration = parser.Parse("host=localhost");
            var hostSelectionStrategy = new DefaultClusterHostSelectionStrategy<ConnectionFactoryInfo>();
            var connectionFactory = new ConnectionFactoryWrapper(configuration, hostSelectionStrategy);
            connection = new PersistentConnection(connectionFactory, logger, eventBus);
            var persistentChannelFactory = new PersistentChannelFactory(logger, configuration, eventBus);

            dispatcher = new ClientCommandDispatcher(connection, persistentChannelFactory);
        }
コード例 #20
0
 public ApplicationWorker(AccountsSettingsModel accountsSettings, 
     EventBus eventBus, 
     OutgoingMailServiceResolver serviceResolver, 
     AsyncObservableCollection<EmailGroupModel> emailGroupList,
     ApplicationSettingsModel appSettings,
     IMailStorage mailStorage)
 {
     _accountsSettings = accountsSettings;
     _eventBus = eventBus;
     _serviceResolver = serviceResolver;
     _emailGroupList = emailGroupList;
     _appSettings = appSettings;
     _mailStorage = mailStorage;
 }
コード例 #21
0
        public void SetUpListeners(EventBus bus)
        {
            if (_settings.ConsoleMode != ConsoleMode.Quiet)
            {
                var consoleListener = new ConsoleResultListener
                {
                    ColorEnabled = _settings.ConsoleMode == ConsoleMode.Color
                };

                bus.Register(consoleListener);
            }

            AddFileWritingListenerIfConfigured(bus);
        }
コード例 #22
0
        public MailListWindow(EventBus eventBus, AsyncObservableCollection<EmailGroupModel> emailGroupList, ApplicationSettingsModel appSettings)
        {
            _eventBus = eventBus;
            _emailGroupListModel = emailGroupList;
            _appSettings = appSettings;

            var screen = Screen.FromHandle(new WindowInteropHelper(this).Handle).WorkingArea;
            _defaultWindowRect = new Rect(screen.Width - DefaultWidth, 0, DefaultWidth, screen.Height);

            InitializeComponent();
            SetWindowRect();
            Closing += OnClosing;
            _emailGroupListModel.CollectionChanged += EmailGroupListModelOnCollectionChanged;
        }
コード例 #23
0
        public RemoteScenarioExecutor(IRemoteTaskServer server, AssemblyRegistry assemblyRegistry)
        {
            _server = server;
            _assemblyRegistry = assemblyRegistry;
            _sessionContext = new SessionContext(assemblyRegistry);

            _eventBus = new EventBus();
            _listener = new ResharperResultListener(_server);

            _resolver = new MostRecentlyUsedContext();
            _runner = BuildInPlaceRunner(_resolver);

            _eventBus.Register(_resolver);
            _eventBus.Register(_listener);
        }
コード例 #24
0
        public void TestHandlersForABaseClassShouldReceiveDerivedClassMessages()
        {
            var eventBus = new EventBus();
            var testMessage = new ChildEmptyTestMessage();

            bool handlerCalled = false;

            eventBus.Register((EmptyTestMessage message) => {
                message.Should().BeSameAs(testMessage, "because we should have received the object we sent");
                handlerCalled = true;
            });

            eventBus.Send(testMessage);

            handlerCalled.Should().BeTrue("because handlers registered for a base class should receive derived class messages");
        }
コード例 #25
0
ファイル: Global.asax.cs プロジェクト: mikkeldamm/cqrs-es-ddd
        private static void RegisterQueries(Container container)
        {
            var eventDelegator = new EventBus();

            var reservationHub = new Lazy<IHubContext>(() => GlobalHost.ConnectionManager.GetHubContext<ReservationHub>());

            var getAllReservationsView = new GetAllReservationsView();
            var getAllReservationsViewDecorator = new GetAllReservationsViewHub(reservationHub, getAllReservationsView);

            container.RegisterSingleton<IGetAllReservationsView>(() => { return getAllReservationsViewDecorator; });

            eventDelegator.Register<ReservationCreated>(getAllReservationsViewDecorator.Handle);
            eventDelegator.Register<ReservationOutboundDateTimeChanged>(getAllReservationsViewDecorator.Handle);
            eventDelegator.Register<ReservationDeleted>(getAllReservationsViewDecorator.Handle);

            eventDelegator.StartListener();
        }
コード例 #26
0
ファイル: EventBusTest.cs プロジェクト: mbenford/EasyEventBus
        public async void Uses_The_Provided_Strategies_To_Publish_An_Event_Asynchronously()
        {
            // Arrange
            var publicationStrategyMock = new[]
            {
                new Mock<IPublicationStrategy>(),
                new Mock<IPublicationStrategy>(),
                new Mock<IPublicationStrategy>()
            };
            var sut = new EventBus(publicationStrategyMock.Select(m => m.Object));

            // Act
            await sut.PublishAsync("some data");

            // Assert
            publicationStrategyMock[0].Verify(s => s.Publish("some data"));
            publicationStrategyMock[1].Verify(s => s.Publish("some data"));
            publicationStrategyMock[2].Verify(s => s.Publish("some data"));
        }
コード例 #27
0
        public void TestCorrectMessageIsReceived()
        {
            var eventBus = new EventBus();
            var testMessage = new EmptyTestMessage();

            bool handlerCalled = false;

            eventBus.Register((EmptyTestMessage message) => {
                message.Should().BeSameAs(testMessage, "because we should have received the object we sent");
                handlerCalled = true;
            });

            eventBus.Register((EmptyTestMessage2 message) => {
                throw new Exception("Handler should not be called");
            });

            eventBus.Send(testMessage);
            handlerCalled.Should().BeTrue("because otherwise the correct handler wasn't called");
        }
コード例 #28
0
        public RemoteScenarioExecutor(IRemoteTaskServer server, AssemblyRegistry assemblyRegistry)
        {
            _server = server;
            _assemblyRegistry = assemblyRegistry;
            _sessionContext = new SessionContext(assemblyRegistry);

            _eventBus = new EventBus();

            new EventBusAutoRegistrar(_assemblyRegistry).InstallTo(_eventBus);
            _listener = new ResharperResultListener(_server);

            _resolver = new MostRecentlyUsedContext();
            _runner = BuildInPlaceRunner(_resolver);

            _eventBus.Register(_resolver);
            _eventBus.Register(_listener);

            ParameterConverter.AddCustomConverters(_assemblyRegistry);
        }
コード例 #29
0
        public UserAccountService(MembershipRebootConfiguration configuration, IUserAccountRepository userRepository)
        {
            if (configuration == null) throw new ArgumentNullException("configuration");
            if (userRepository == null) throw new ArgumentNullException("userRepository");
            
            this.Configuration = configuration;

            var validationEventBus = new EventBus();
            validationEventBus.Add(new UserAccountValidator(this));
            this.userRepository = new EventBusUserAccountRepository(userRepository,
                new AggregateEventBus { validationEventBus, configuration.ValidationBus },
                configuration.EventBus);

            this.usernameValidator = new Lazy<AggregateValidator>(()=>
            {
                var val = new AggregateValidator();
                if (!this.SecuritySettings.EmailIsUsername)
                {
                    val.Add(UserAccountValidation.UsernameDoesNotContainAtSign);
                }
                val.Add(UserAccountValidation.UsernameMustNotAlreadyExist);
                val.Add(configuration.UsernameValidator);
                return val;
            });

            this.emailValidator = new Lazy<AggregateValidator>(() =>
            {
                var val = new AggregateValidator();
                val.Add(UserAccountValidation.EmailIsValidFormat);
                val.Add(UserAccountValidation.EmailMustNotAlreadyExist);
                val.Add(configuration.EmailValidator);
                return val;
            });

            this.passwordValidator = new Lazy<AggregateValidator>(() =>
            {
                var val = new AggregateValidator();
                val.Add(UserAccountValidation.PasswordMustBeDifferentThanCurrent);
                val.Add(configuration.PasswordValidator);
                return val;
            });
        }
コード例 #30
0
 void OnEnable()
 {
     playerInteractHandler    = EventBus.Subscribe <PlayerInteractEvent>(OnPlayerInteracted);
     playerDisInteractHandler = EventBus.Subscribe <PlayerDisinteractEvent>(OnPlayerDisinteracted);
 }
コード例 #31
0
ファイル: Apple.cs プロジェクト: maxrzaw/TrickyTreaters
 public void OnPointerEnter(PointerEventData eventData)
 {
     EventBus.Publish <AppleScoreEvent>(new AppleScoreEvent(score));
     Destroy(this.gameObject);
 }
コード例 #32
0
 void OnDisable()
 {
     EventBus.Unsubscribe(playerInteractHandler);
     EventBus.Unsubscribe(playerDisInteractHandler);
 }
コード例 #33
0
 public override void Apply()
 {
     Curio.AddBehavior(this);
     EventBus.Register(this);
 }
コード例 #34
0
        public HomeModule(IDeezerApi deezerApi, ISongRepository songRepository,
                          IPlaylistRepository playlistRepository, Environment environment,
                          IMetric metric)
        {
            _deezerApi          = deezerApi;
            _songRepository     = songRepository;
            _playlistRepository = playlistRepository;
            _environment        = environment;
            _metric             = metric;
            var eventStream    = new MemoryEventStream();
            var eventPublisher = new EventBus(eventStream);

            eventPublisher.Subscribe(new PlaylistHandler(playlistRepository));

            Get["/"] = _ =>
            {
                using (var timer = _metric.Timer("home"))
                {
                    var model = new
                    {
                        appid   = _environment.AppId,
                        channel = _environment.Channel
                    };

                    return(View["index", model]);
                }
            };

            Get["/channel"] = _ =>
            {
                using (var timer = _metric.Timer("channel"))
                {
                    var cacheExpire = 60 * 60 * 24 * 365;

                    return(View["channel"]
                           .WithHeader("Pragma", "public")
                           .WithHeader("Cache-Control", $"maxage={cacheExpire}")
                           .WithHeader("Expires", DateTime.Now.AddMinutes(cacheExpire).ToString("F")));
                }
            };

            Post["/login"] = _ =>
            {
                using (var timer = _metric.Timer("createplaylist"))
                {
                    var model = this.Bind <LoginViewModel>();

                    var user = User.Create(eventStream, eventPublisher, _deezerApi, _songRepository,
                                           _playlistRepository, model.Email, model.Nickname, model.UserId, model.AccessToken,
                                           _environment.Size);

                    user.AddPlaylist(model.PlaylistName);
                    Console.WriteLine(user.Playlist.PlaylistId.Value);
                    return(Response.AsJson(new { playlistCreated = !user.Playlist.PlaylistId.IsEmpty }));
                }
            };

            Get["/canCreatePlaylist/{userId}"] = parameters =>
            {
                using (var timer = _metric.Timer("hasplaylist"))
                {
                    var userId            = UserId.Parse((string)parameters.userId);
                    var canCreatePlaylist = _playlistRepository
                                            .CanCreatePlaylist(userId, DateTime.UtcNow.AddDays(-1));

                    return(Response.AsJson(new { canCreatePlaylist }));
                }
            };
        }
コード例 #35
0
ファイル: ClearTextStatusCommand.cs プロジェクト: jsgmu/cs633
 public override void apply()
 {
     EventBus.Publish <ClearTextStatus>(new ClearTextStatus {
         AssociatedAlgorithm = AssociatedAlgorithm
     });
 }
コード例 #36
0
 void OnEnable()
 {
     EventBus.StartListening("Queso", Quesod);
 }
コード例 #37
0
 /// <summary>
 /// 注册EventHandler
 /// </summary>
 public void RegisterEventHandler()
 {
     EventBus <GroupMemberApply> .Instance().After += new CommonEventHandler <GroupMemberApply, CommonEventArgs>(GroupMemberApplyNoticeModule_After);
 }
コード例 #38
0
ファイル: Main.cs プロジェクト: Someone999/InfoReader
        public InfoReader() : base(PLUGIN_NAME, PLUGIN_AUTHOR)
        {
            if (!File.Exists("InfoReader.db"))
            {
                File.WriteAllBytes("InfoReader.db", Resource1.Database);
            }

            /*else
             * {
             *  byte[] dbBytes = File.ReadAllBytes("InfoReader.db");
             *  MD5 selfMd5 = MD5.Create(), fileMd5 = MD5.Create();
             *  selfMd5.ComputeHash(Resource1.Database);
             *  fileMd5.ComputeHash(dbBytes);
             *  MD5String selfMd5String = new MD5String(selfMd5), fileMd5String = new MD5String(fileMd5);
             *  if (selfMd5String != fileMd5String)
             *  {
             *      File.Delete("InfoReader.db");
             *      File.WriteAllBytes("InfoReader.db",Resource1.Database);
             *  }
             * }*/
            StringBuilder builder = new StringBuilder(32);

            GetPrivateProfileString("Sync.DefaultConfiguration", "Language", "zh-cn", builder, 32, "..\\config.ini");
            SyncLang     = builder.ToString();
            CurrentNi18N = NI18n.GetCurrentLanguage();
            CurrentNi18N.InitializeOperator();
            ScanCommand();
            if (File.Exists("RealTimePPDisplayer.dll"))
            {
                byte[] b = File.ReadAllBytes("RealTimePPDisplayer.dll");
                MD5    selfMd5 = MD5.Create(), fileMd5 = MD5.Create();
                selfMd5.ComputeHash(Resource1.ModifiedRealTimePPDisplayer);
                fileMd5.ComputeHash(b);
                if (MD5String.GetString(selfMd5) != MD5String.GetString(fileMd5))
                {
                    var dirInfo = Directory.CreateDirectory("..\\OrignalRealTimePPDisplayer\\");
                    IO.CurrentIO.Write(NI18n.GetLanguageElement("LANG_INFO_RTPPDREPLACED"));
                    if (File.Exists(Path.Combine(dirInfo.FullName, "RealTimePPDisplayer.dll")))
                    {
                        File.Delete(Path.Combine(dirInfo.FullName, "RealTimePPDisplayer.dll"));
                    }
                    File.Move("RealTimePPDisplayer.dll", Path.Combine(dirInfo.FullName, "RealTimePPDisplayer.dll"));
                    File.WriteAllBytes("RealTimePPDisplayer.dll", Resource1.ModifiedRealTimePPDisplayer);
                }
            }
            else
            {
                File.WriteAllBytes("RealTimePPDisplayer.dll", Resource1.ModifiedRealTimePPDisplayer);
            }

            /*if(!File.Exists("bass.dll"))
             *  File.WriteAllBytes("bass.dll",Resource1.bass);*/

            _outputInfoMap = MemoryMappedFile.CreateOrOpen("InfoReaderMmf", 128);
            EventBus.BindEvent <PluginEvents.InitPluginEvent>(Init);
            EventBus.BindEvent <PluginEvents.LoadCompleteEvent>(Loaded);
            EventBus.BindEvent <PluginEvents.InitCommandEvent>(CommandInit);
            PluginConfigurationManager manager = new Sync.Tools.PluginConfigurationManager(this);

            manager.AddItem(Setting);
        }
コード例 #39
0
 void OnEnable()
 {
     EventBus.StartListening("Audio", AddAudioEvent);
 }
コード例 #40
0
        private void TryProcessJob(BackgroundJobInfo jobInfo)
        {
            try
            {
                jobInfo.TryCount++;
                jobInfo.LastTryTime = DateTime.Now;

                var jobType = Type.GetType(jobInfo.JobType);
                using (var job = _iocResolver.ResolveAsDisposable(jobType))
                {
                    try
                    {
                        var jobExecuteMethod = job.Object.GetType().GetTypeInfo().GetMethod("Execute");
                        var argsType         = jobExecuteMethod.GetParameters()[0].ParameterType;
                        var argsObj          = JsonConvert.DeserializeObject(jobInfo.JobArgs, argsType);

                        jobExecuteMethod.Invoke(job.Object, new[] { argsObj });

                        AsyncHelper.RunSync(() => _store.DeleteAsync(jobInfo));
                    }
                    catch (Exception ex)
                    {
                        Logger.Warn(ex.Message, ex);

                        var nextTryTime = jobInfo.CalculateNextTryTime();
                        if (nextTryTime.HasValue)
                        {
                            jobInfo.NextTryTime = nextTryTime.Value;
                        }
                        else
                        {
                            jobInfo.IsAbandoned = true;
                        }

                        TryUpdate(jobInfo);

                        EventBus.Trigger(
                            this,
                            new ExceptionData(
                                new BackgroundJobException(
                                    "A background job execution is failed. See inner exception for details. See BackgroundJob property to get information on the background job.",
                                    ex
                                    )
                        {
                            BackgroundJob = jobInfo,
                            JobObject     = job.Object
                        }
                                )
                            );
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Warn(ex.ToString(), ex);

                jobInfo.IsAbandoned = true;

                TryUpdate(jobInfo);
            }
        }
コード例 #41
0
 /// <summary>
 /// 注册事件处理程序
 /// </summary>
 void IEventMoudle.RegisterEventHandler()
 {
     EventBus <Journal, AuditEventArgs> .Instance().After += new CommonEventHandler <Journal, AuditEventArgs>(JournalsEventModule_After);
 }
コード例 #42
0
ファイル: ServerEvents.cs プロジェクト: tuita520/MobileMMORTS
 public void Clear()
 {
     _packetListener = new EventBus <BasePacket>();
     _eventListener  = new EventBus <IEvent>();
 }
コード例 #43
0
 private void OnJointBreak(float breakForce)
 {
     EventBus.Trigger(EventHooks.OnJointBreak, gameObject, breakForce);
 }
コード例 #44
0
 void OnEnable()
 {
     EventBus.StartListening("Stop", Stop);
 }
コード例 #45
0
 /// <summary>
 /// 注册事件处理程序
 /// </summary>
 void IEventMoudle.RegisterEventHandler()
 {
     EventBus <BlogThread> .Instance().After += new CommonEventHandler <BlogThread, CommonEventArgs>(BlogOperationLogEventModule_After);
 }
コード例 #46
0
 private void Awake()
 {
     m_Camera = Camera.main;
     AddDisposable(EventBus.Subscribe(this));
 }
コード例 #47
0
 /// <summary>
 /// Trigger the return event. This is meant for internal use of the trigger unit.
 /// </summary>
 /// <param name="trigger">The trigger unit we will return to when it hits a return unit.</param>
 /// <param name="target">The gameobject target of the event</param>
 /// <param name="name">The name of the event.</param>
 /// <param name="global">Is the event global to all Return Events? Will ignore the target GameObject. Target can be null in this case.</param>
 /// <param name="args">The arguments to send through.</param>
 public static void Trigger(TriggerReturnEvent trigger, GameObject target, string name, bool global = false, params object[] args)
 {
     EventBus.Trigger <ReturnEventArg>("Return", new ReturnEventArg(trigger, target, name, global, args));
 }
コード例 #48
0
 public void WaitUntilEventBusIsIdle()
 {
     EventBus.WaitForIdle();
     loggerTest.LogInformation("Waiting for the EventBus to become idle completed");
 }
コード例 #49
0
 public CreateCompany(EventBus eventBus, ICompanyQueries companyQueries) : base(eventBus)
 {
     _companyQueries = companyQueries ?? throw new ArgumentNullException(nameof(companyQueries));
 }
コード例 #50
0
        internal static bool Prefix(AddPet __instance)
        {
            if (!__instance.Owner.IsPlayerFaction)
            {
                return(true);
            }
            if (__instance.SpawnedPet == null)
            {
                return(false);
            }

            AddClassLevels component = __instance.SpawnedPet.Blueprint.GetComponent <AddClassLevels>();


            if (component == null)
            {
                return(false);
            }

            if (!manual_classes.Contains(component.CharacterClass))
            {//non animal and non eidolon companions will have automatic level up
                return(true);
            }

            int pet_level = 0;
            var eidolon   = __instance.SpawnedPet.Blueprint.GetComponent <Eidolon.EidolonComponent>();

            if (eidolon == null)
            {
                var tr = Harmony12.Traverse.Create(__instance);
                pet_level = tr.Method("GetPetLevel").GetValue <int>();
            }
            else
            {
                pet_level = eidolon.getEidolonLevel(__instance);
            }
            //Main.logger.Log("Pet level: " + __instance.SpawnedPet.Descriptor.Progression.CharacterLevel.ToString());
            //Main.logger.Log("Should be: " + pet_level.ToString());

            if (pet_level > __instance.SpawnedPet.Descriptor.Progression.CharacterLevel)
            {
                if (__instance.SpawnedPet.Descriptor.Progression.CharacterLevel == 0)
                {
                    component.LevelUp(__instance.SpawnedPet.Descriptor, 1);
                }
                var exp = Game.Instance.BlueprintRoot.Progression.XPTable.GetBonus(pet_level);
                Harmony12.Traverse.Create(__instance.SpawnedPet.Descriptor.Progression).Property("Experience").SetValue(exp);
                EventBus.RaiseEvent <IUnitGainExperienceHandler>((Action <IUnitGainExperienceHandler>)(h => h.HandleUnitGainExperience(__instance.SpawnedPet.Descriptor, exp)));
                //Main.logger.Log("Pet level now: " + __instance.SpawnedPet.Descriptor.Progression.CharacterLevel.ToString());
            }

            if (eidolon != null)
            {//no upgrade for eidolon, since they are performed through summoner
                return(false);
            }
            int?rank = __instance.Owner.GetFact((BlueprintUnitFact)__instance.LevelRank)?.GetRank();

            if (Mathf.Min(20, !rank.HasValue ? 0 : rank.Value) < __instance.UpgradeLevel)
            {
                return(false);
            }
            __instance.SpawnedPet.Descriptor.Progression.Features.AddFeature(__instance.UpgradeFeature, (MechanicsContext)null);
            return(false);
        }
コード例 #51
0
 private static void FireEvent <T>(T @event) where T : DetourEvent
 {
     HookEvent(@event);
     EventBus.Fire(@event);
 }
コード例 #52
0
 public static void Trigger(GameObject target, string name, Action <object> callback = null, bool global = false, params object[] args)
 {
     EventBus.Trigger <ReturnEventArg>("Return", new ReturnEventArg(callback, target, name, global, args));
 }
コード例 #53
0
 private void OnMouseEnter()
 {
     EventBus.Trigger(EventHooks.OnMouseEnter, gameObject);
 }
コード例 #54
0
        public override void RunAction()
        {
            UnitEntityData caster = this.Context.MaybeCaster;

            if (caster == null)
            {
                UberDebug.LogError((UnityEngine.Object) this, (object)"Caster is missing", (object[])Array.Empty <object>());
            }
            var unit = this.Target.Unit;

            if (unit == null || !unit.Descriptor.State.IsDead || unit.Descriptor.State.HasCondition(UnitCondition.Petrified))
            {
                return;
            }

            Rounds duration = this.DurationValue.Calculate(this.Context);

            int level   = Math.Max(Math.Min(getRacialHD(this.Target.Unit.Descriptor), 20), Blueprint.GetComponent <AddClassLevels>().Levels);
            int max_lvl = this.Context.Params.CasterLevel * hd_cl_multiplier * (this.Context.MaybeCaster.Descriptor.HasFact(ChannelEnergyEngine.desecrate_buff) ? 2 : 1);

            if (level > max_lvl)
            {
                Common.AddBattleLogMessage($"{unit.CharacterName} corpse HD ({level}) is beyond your {caster.CharacterName}'s to animate ({max_lvl}).");
                return;
            }

            //Main.logger.Log("Animate Dead: Remaining HD limit: " + getUsedHD(this.Context, SummonPool).ToString() + "/" + (this.Context.Params.CasterLevel * max_hd_cl_multiplier).ToString());
            int max_total_hd = this.Context.Params.CasterLevel * max_hd_cl_multiplier;
            int used_hd      = getUsedHD(this.Context, SummonPool);
            int remaining_hd = max_total_hd - used_hd;

            if (level > remaining_hd)
            {
                Common.AddBattleLogMessage($"{unit.CharacterName} corpse HD ({level}) does not fit into {caster.CharacterName}'s animate dead HD limit ({remaining_hd}/{max_total_hd})");
                return;
            }
            Vector3        clampedPosition = ObstacleAnalyzer.GetNearestNode(this.Target.Point).clampedPosition;
            UnitEntityView unitEntityView  = this.Blueprint.Prefab.Load(false);

            var target_size = unit.Descriptor.OriginalSize;

            float radius = !((UnityEngine.Object)unitEntityView != (UnityEngine.Object)null) ? 0.5f : unitEntityView.Corpulence;

            FreePlaceSelector.PlaceSpawnPlaces(1, radius, clampedPosition);

            Vector3        relaxedPosition = FreePlaceSelector.GetRelaxedPosition(0, true);
            UnitEntityData animated_unit   = this.Context.TriggerRule <RuleSummonUnit>(new RuleSummonUnit(caster, this.Blueprint, relaxedPosition, duration, 0)
            {
                Context           = this.Context,
                DoNotLinkToCaster = this.do_not_link_to_caster
            }).SummonedUnit;

            if (this.SummonPool != null)
            {
                GameHelper.RegisterUnitInSummonPool(this.SummonPool, animated_unit);
            }

            var level_up_component = animated_unit.Blueprint.GetComponent <AddClassLevels>();

            int current_level = level_up_component.Levels;

            animated_unit.Stats.Strength.BaseValue  = unit.Stats.Strength.BaseValue + str_bonus;
            animated_unit.Stats.Dexterity.BaseValue = unit.Stats.Dexterity.BaseValue + dex_bonus;

            if (adapt_size)
            {
                animated_unit.Descriptor.AddFact(Common.size_override_facts[target_size], null, null);
            }

            if (current_level < level)
            {
                level_up_component.LevelUp(animated_unit.Descriptor, level - current_level);
            }

            if (transfer_equipment && unit.Body.HandsAreEnabled)
            {
                animated_unit.Body.CurrentHandEquipmentSetIndex = unit.Body.CurrentHandEquipmentSetIndex;
                List <ItemSlot> list1 = unit.Body.EquipmentSlots.ToList <ItemSlot>();
                List <ItemSlot> list2 = animated_unit.Body.EquipmentSlots.ToList <ItemSlot>();
                for (int index = 0; index < list1.Count && index < list2.Count; ++index)
                {
                    ItemEntity maybeItem = list1[index].MaybeItem;
                    if (maybeItem != null)
                    {
                        animated_unit.Body.TryInsertItem(maybeItem.Blueprint, list2[index]);
                    }
                }
            }
            animated_unit.Descriptor.State.AddCondition(UnitCondition.Unlootable, (Kingmaker.UnitLogic.Buffs.Buff)null);


            using (this.Context.GetDataScope(animated_unit))
            {
                this.AfterSpawn.Run();
            }

            unit.Descriptor.AddFact(Common.no_animate_feature);

            animated_unit.Descriptor.CustomName = animated_unit.Descriptor.CharacterName + $" ({level} HD)";
            EventBus.RaiseEvent <IUnitNameHandler>((Action <IUnitNameHandler>)(h => h.OnUnitNameChanged(animated_unit)));
        }
コード例 #55
0
 public override void Remove()
 {
     base.Remove();
     EventBus.Unregister(this);
 }
コード例 #56
0
 /// <summary>
 /// 注册事件处理程序
 /// </summary>
 void IEventMoudle.RegisterEventHandler()
 {
     EventBus <MicroblogEntity> .Instance().After += new CommonEventHandler <MicroblogEntity, CommonEventArgs>(MicroblogOperationLogEventModule_After);
 }
コード例 #57
0
 public void RegisterEventHandler()
 {
     EventBus <FollowEntity> .Instance().After += new CommonEventHandler <FollowEntity, CommonEventArgs>(FollowUser_After);
 }
コード例 #58
0
 private void OnCinematicEnd(PlayableDirector director)
 {
     EventBus.PublishEvent(new FriendFullyAssembledEvent()); // This event kicks off the end credits
 }
コード例 #59
0
ファイル: Application.cs プロジェクト: cfe84/MailToRss
 public Application(DependencyBundle dependencies)
 {
     EventBus = new EventBus(dependencies.EventStore);
     RegisterReactors(dependencies);
 }
コード例 #60
-12
        private void AddFileWritingListenerIfConfigured(EventBus bus)
        {
            if (string.IsNullOrEmpty(_settings.OutputFile))
                return;

            bus.Register(GetWriterForOutputFormat());
        }