public static async Task Run()
        {
            var appender        = new MemoryAppendStoreAsync();
            IEventStoreAsync es = new EventStoreAsync(appender);

            IDtoConverter <SayingDto, Saying> converter = new MyDtoConverters();
            Stream mem = System.IO.File.Open("test.json", FileMode.OpenOrCreate, FileAccess.ReadWrite);

            IDtoSerializer <SayingDto>  dtoSerializer = new FastJsonSerializer <SayingDto>(mem);
            ITableReaderWriter <Saying> said          = new TableWriterForSerializer <Saying, SayingDto>(new MemoryHashTableWriter <Saying>(), converter, dtoSerializer);

            IAsyncProjection projection = new ConsoleProjection(new AsyncProjectFromImplementation(new SayingHistoryProjection(said)));

            IEventStoreAsync es2 = new EventStoreAsyncPublisher(es, projection);


            //IAsyncCommandDispatcher dispatcher = new ConsoleLoggerDispatcher(new CompositeAsyncCommandDispatcher(new SaySomething(es2)));
            ICommandHandler handler = new SaySomething(es2);

            await handler.GetExecutor(new SayCommand()
            {
                PersonId  = new PersonId(1),
                Say       = "Say hello",
                Timestamp = DateTime.UtcNow
            }).Execute();

            foreach (var saying in said.GetAll().Result)
            {
                Console.Write("Entry in projection:\t\t");
                Console.WriteLine("{0} said: {1}", saying.PersonId, saying.Said);
            }
        }
Exemplo n.º 2
0
            public async void ReadAppend()
            {
                var appender = new StreamAppenderAsync(StreamAppenderAsync.StreamAppenderOptions.UseSingleStream(this.appendStream));

                var es     = new EventStoreAsync(appender);
                var id     = new StringId("id1");
                var events = new IEvent[] { BigEventData.Create(id, 12), BigEventData.Create(id, 128), BigEventData.Create(id, 13) };

                var id2     = new StringId("id2");
                var events2 = new IEvent[] { BigEventData.Create(id, 100), BigEventData.Create(id, 128), BigEventData.Create(id, 100) };

                var events3 = new IEvent[] { BigEventData.Create(id, 44) };

                await es.AppendToStream(id, 0, events.ToList());

                await es.AppendToStream(id2, 0, events2.ToList());

                await es.AppendToStream(id, 1, events3.ToList());

                Assert.Equal(2800, this.appendStream.Length);

                var stream = await es.LoadEventStream(id);

                Assert.Equal(2, stream.Version);

                var stream2 = await es.LoadEventStream(id2);

                Assert.Equal(1, stream2.Version);
            }
Exemplo n.º 3
0
        public async Task ExecuteCommand()
        {
            string container  = "testing";
            string connection = "";
            //var appender = new AzureAsyncAppender(connection, container, new PrefixedDirectory("demo"));
            //await appender.Initialize();

            var appender = new MemoryAppendStoreAsync();

            var es = new EventStoreAsync(appender);

            var dispatcher = new SaySomething(es);

            await dispatcher.GetExecutor(
                new SayCommand
            {
                PersonId  = new PersonId(1),
                Say       = "I am Winter ",
                Timestamp = DateTime.UtcNow
            }).Execute();

            await dispatcher.GetExecutor(
                new SayCommand
            {
                PersonId  = new PersonId(1),
                Say       = "How are you?",
                Timestamp = DateTime.UtcNow
            }).Execute();

            await dispatcher.GetExecutor(
                new SayCommand
            {
                PersonId  = new PersonId(1),
                Say       = "Dunno...",
                Timestamp = DateTime.UtcNow
            }).Execute();

            await dispatcher.GetExecutor(
                new SayCommand
            {
                PersonId  = new PersonId(1),
                Say       = "ok say something more",
                Timestamp = DateTime.UtcNow
            }).Execute();

            await dispatcher.GetExecutor(
                new SayCommand
            {
                PersonId  = new PersonId(1),
                Say       = "NO!",
                Timestamp = DateTime.UtcNow
            }).Execute();

            var events = (await es.ReplayAll()).Events;

            Assert.Equal(5, events.Count);
        }
Exemplo n.º 4
0
        public async Task WriteFile()
        {
            var fs = new FileAppendOnlyStoreAsync(new FileAppendOnlyStoreAsync.Options(File)
            {
                FileStream = s => Path.Combine(this.File, s + ".dat")
            });
            var es = new EventStoreAsync(fs);

            var id = new GuidId(Guid.NewGuid());
            await es.AppendToStream(id, 0, new List <IEvent>() { new MyNewEventEvent(id.ToString(), Guid.NewGuid(), DateTime.UtcNow) });
        }
Exemplo n.º 5
0
        public async Task ReadFileAsEvents()
        {
            var fs = new FileAppendOnlyStoreAsync(new FileAppendOnlyStoreAsync.Options(File)
            {
                MasterStreamName = "mystream_stream"
            });
            var es     = new EventStoreAsync(fs);
            var stream = await es.ReplayAll(0, int.MaxValue);

            Assert.NotEmpty(stream.Events);
        }
Exemplo n.º 6
0
            public async void WriteAppend()
            {
                var appender = new StreamAppenderAsync(StreamAppenderAsync.StreamAppenderOptions.UseSingleStream(this.appendStream));

                var es     = new EventStoreAsync(appender);
                var id     = new StringId("id1");
                var events = new IEvent[] { BigEventData.Create(id, 12), BigEventData.Create(id, 128), BigEventData.Create(id, 13) };

                await es.AppendToStream(id, 0, events.ToList());

                Assert.Equal(962, this.appendStream.Length);
            }
Exemplo n.º 7
0
 public PerformanceRun()
 {
     Console.WriteLine("");
     Console.Write("Azure Connection string:");
     this.connection = Console.ReadLine();
     Console.WriteLine("");
     Console.Write("Azure container:");
     this.container = Console.ReadLine();
     this.appender  = new AzureAsyncAppender(connection, container, new AzureBlobAppenderOptions()
     {
         NamingPolicy = new NameDashGuidNaming("es")
     });
     this.eventstore = new EventStoreAsync(appender);
 }
Exemplo n.º 8
0
        public async Task AppendToEmptyStream()
        {
            var appender = new MemoryAppendStoreAsync();
            var es       = new EventStoreAsync(appender);

            var dispatcher = new TastyDomainDriven.Sample.CommandServices.SaySomething(es);

            await
            dispatcher.GetExecutor(new SayCommand()
            {
                PersonId  = new PersonId(1),
                Say       = "I have something to say",
                Timestamp = DateTime.UtcNow
            }).Execute();

            Assert.Equal(1, (await es.ReplayAll()).Events.Count);
        }
Exemplo n.º 9
0
        public async Task AppendToToPublisher()
        {
            var appender = new MemoryAppendStoreAsync();
            var es       = new EventStoreAsync(appender);
            ITableReaderWriter <Saying> table = new MemoryHashTableWriter <Saying>();

            var publisher  = new EventStoreAsyncPublisher(es, new AsyncProjectFromImplementation(new SayingHistoryProjection(table)));
            var dispatcher = new Sample.CommandServices.SaySomething(publisher);

            await
            dispatcher.GetExecutor(new SayCommand()
            {
                PersonId  = new PersonId(1),
                Say       = "I have something to say",
                Timestamp = DateTime.UtcNow
            }).Execute();

            Assert.Equal(1, (await es.ReplayAll()).Events.Count);
            Assert.Equal(1, (await table.GetAll()).Count);
        }
Exemplo n.º 10
0
        public async Task WriteStreamAndExtraxt()
        {
            var fs = new FileAppendOnlyStoreAsync(File);

            var es  = new EventStoreAsync(fs);
            var id2 = GuidId.NewGuidId();
            var id1 = GuidId.NewGuidId();

            await es.AppendToStream(id2, 0, new[] { new BigEventData(), new BigEventData(), new BigEventData() });

            await es.AppendToStream(id1, 0, new[] { new BigEventData(), new BigEventData(), new BigEventData() });

            await es.AppendToStream(id2, 1, new[] { new BigEventData(), new BigEventData(), new BigEventData() });

            await es.AppendToStream(id1, 1, new[] { new BigEventData(), new BigEventData(), new BigEventData() });

            await fs.ExtractMasterStream(new DirectoryInfo(Path.Combine(File, "out")), new NameDashGuidNaming(), 0, int.MaxValue);


            Assert.True(true, "Tested in: " + File);
        }