예제 #1
0
        Task IProjectionsManagement.CreateContinuousAsync(string name, string query)
        {
            Ensure.NotNullOrEmpty(name, "name");
            Ensure.NotNullOrEmpty(query, "query");

            return(_projectionsManager.CreateContinious(name, query));
        }
예제 #2
0
        Task IProjectionsManagement.CreatePersistentAsync(string name, string query)
        {
            Ensure.NotNullOrEmpty(name, "name");
            Ensure.NotNullOrEmpty(query, "query");

            return(_projectionsManager.CreatePersistent(name, query));
        }
예제 #3
0
        public EventStoreConnection(IPEndPoint tcpEndPoint,
                                    int maxConcurrentRequests   = 50,
                                    int maxAttemptsForOperation = 10,
                                    int maxReconnections        = 10,
                                    ILogger logger = null)
        {
            Ensure.NotNull(tcpEndPoint, "tcpEndPoint");
            Ensure.Positive(maxConcurrentRequests, "maxConcurrentRequests");
            Ensure.Nonnegative(maxAttemptsForOperation, "maxAttemptsForOperation");
            Ensure.Nonnegative(maxReconnections, "maxReconnections");

            _tcpEndPoint        = tcpEndPoint;
            _maxConcurrentItems = maxConcurrentRequests;
            _maxAttempts        = maxAttemptsForOperation;
            _maxReconnections   = maxReconnections;

            LogManager.RegisterLogger(logger);
            _log = LogManager.GetLogger();

            _connector            = new TcpConnector(_tcpEndPoint);
            _subscriptionsChannel = new SubscriptionsChannel(_connector);
            //TODO TD: WAT?
            _projectionsManager = new ProjectionsManager(new IPEndPoint(_tcpEndPoint.Address, _tcpEndPoint.Port + 1000));

            _lastReconnectionTimestamp = DateTime.UtcNow;
            _connection = _connector.CreateTcpConnection(OnPackageReceived, OnConnectionEstablished, OnConnectionClosed);
            _timeoutCheckStopwatch.Start();

            _worker = new Thread(MainLoop)
            {
                IsBackground = true,
                Name         = "Worker thread"
            };
            _worker.Start();
        }
예제 #4
0
        Task IProjectionsManagement.UpdateQueryAsync(string name, string query)
        {
            Ensure.NotNullOrEmpty(name, "name");
            Ensure.NotNullOrEmpty(query, "query");

            return(_projectionsManager.UpdateQuery(name, query));
        }
예제 #5
0
        public void CreateStreamWithProtoBufMetadata(string stream, object metadata)
        {
            Ensure.NotNull(metadata, "metadata");
            var metadataBytes = metadata.Serialize();

            CreateStream(stream, metadataBytes.Array);
        }
예제 #6
0
        public Task <CreateStreamResult> CreateStreamWithProtoBufMetadataAsync(string stream, object metadata)
        {
            Ensure.NotNull(metadata, "metadata");
            var metadataBytes = metadata.Serialize();

            return(CreateStreamAsync(stream, metadataBytes.Array));
        }
예제 #7
0
        public void Unsubscribe(string stream)
        {
            Ensure.NotNullOrEmpty(stream, "stream");

            _subscriptionsChannel.EnsureConnected();
            _subscriptionsChannel.Unsubscribe(stream);
        }
예제 #8
0
        public void CommitTransaction(long transactionId, string stream)
        {
            Ensure.NotNullOrEmpty(stream, "stream");

            var task = CommitTransactionAsync(transactionId, stream);

            task.Wait();
        }
예제 #9
0
        public void DeleteStream(string stream, int expectedVersion)
        {
            Ensure.NotNullOrEmpty(stream, "stream");

            var task = DeleteStreamAsync(stream, expectedVersion);

            task.Wait();
        }
예제 #10
0
        void IProjectionsManagement.CreateOneTime(string query)
        {
            Ensure.NotNullOrEmpty(query, "query");

            var task = ((IProjectionsManagement)this).CreateOneTimeAsync(query);

            task.Wait();
        }
예제 #11
0
        protected void InitSocket(Socket socket, IPEndPoint endPoint)
        {
            Ensure.NotNull(socket, "socket");
            Ensure.NotNull(endPoint, "endPoint");

            _socket   = socket;
            _endPoint = endPoint;
        }
예제 #12
0
        public Task SubscribeToAllStreamsAsync(Action <RecordedEvent> eventAppeared, Action subscriptionDropped)
        {
            Ensure.NotNull(eventAppeared, "eventAppeared");
            Ensure.NotNull(subscriptionDropped, "subscriptionDropped");

            _subscriptionsChannel.EnsureConnected();
            return(_subscriptionsChannel.SubscribeToAllStreams(eventAppeared, subscriptionDropped));
        }
예제 #13
0
        void IProjectionsManagement.Delete(string name)
        {
            Ensure.NotNullOrEmpty(name, "name");

            var task = ((IProjectionsManagement)this).DeleteAsync(name);

            task.Wait();
        }
예제 #14
0
            public DeleteStream(Guid correlationId, string eventStreamId, int expectedVersion)
            {
                Ensure.NotNull(eventStreamId, "eventStreamId");

                CorrelationId   = correlationId.ToByteArray();
                EventStreamId   = eventStreamId;
                ExpectedVersion = expectedVersion;
            }
예제 #15
0
        public void CreateStream(string stream, byte[] metadata)
        {
            Ensure.NotNullOrEmpty(stream, "stream");

            var task = CreateStreamAsync(stream, metadata);

            task.Wait();
        }
예제 #16
0
        void IProjectionsManagement.UpdateQuery(string name, string query)
        {
            Ensure.NotNullOrEmpty(name, "name");
            Ensure.NotNullOrEmpty(query, "query");

            var task = ((IProjectionsManagement)this).UpdateQueryAsync(name, query);

            task.Wait();
        }
예제 #17
0
        public EventStoreTransaction StartTransaction(string stream, int expectedVersion)
        {
            Ensure.NotNullOrEmpty(stream, "stream");

            var task = StartTransactionAsync(stream, expectedVersion);

            task.Wait();
            return(task.Result);
        }
예제 #18
0
        public void AppendToStream(string stream, int expectedVersion, IEnumerable <IEvent> events)
        {
            Ensure.NotNullOrEmpty(stream, "stream");
            Ensure.NotNull(events, "events");

            var task = AppendToStreamAsync(stream, expectedVersion, events);

            task.Wait();
        }
예제 #19
0
        public Task SubscribeAsync(string stream, Action <RecordedEvent> eventAppeared, Action subscriptionDropped)
        {
            Ensure.NotNullOrEmpty(stream, "stream");
            Ensure.NotNull(eventAppeared, "eventAppeared");
            Ensure.NotNull(subscriptionDropped, "subscriptionDropped");

            _subscriptionsChannel.EnsureConnected();
            return(_subscriptionsChannel.Subscribe(stream, eventAppeared, subscriptionDropped));
        }
예제 #20
0
        string IProjectionsManagement.GetQuery(string name)
        {
            Ensure.NotNullOrEmpty(name, "name");

            var task = ((IProjectionsManagement)this).GetQueryAsync(name);

            task.Wait();
            return(task.Result);
        }
예제 #21
0
        public void TransactionalWrite(long transactionId, string stream, IEnumerable <IEvent> events)
        {
            Ensure.NotNullOrEmpty(stream, "stream");
            Ensure.NotNull(events, "events");

            var task = TransactionalWriteAsync(transactionId, stream, events);

            task.Wait();
        }
예제 #22
0
        void IProjectionsManagement.CreatePersistent(string name, string query)
        {
            Ensure.NotNullOrEmpty(name, "name");
            Ensure.NotNullOrEmpty(query, "query");

            var task = ((IProjectionsManagement)this).CreatePersistentAsync(name, query);

            task.Wait();
        }
예제 #23
0
            public CreateStream(Guid correlationId,
                                string eventStreamId,
                                byte[] metadata)
            {
                Ensure.NotNull(eventStreamId, "eventStreamId");

                CorrelationId = correlationId.ToByteArray();
                EventStreamId = eventStreamId;
                Metadata      = metadata;
            }
예제 #24
0
        public AllEventsSlice ReadAllEventsBackward(Position position, int maxCount)
        {
            Ensure.NotNull(position, "position");
            Ensure.Positive(maxCount, "maxCount");

            var task = ReadAllEventsBackwardAsync(position, maxCount);

            task.Wait();
            return(task.Result);
        }
예제 #25
0
            public WriteEvents(Guid correlationId, string eventStreamId, int expectedVersion, Event[] events)
            {
                Ensure.NotNull(events, "events");
                Ensure.Positive(events.Length, "events.Length");

                CorrelationId   = correlationId.ToByteArray();
                EventStreamId   = eventStreamId;
                ExpectedVersion = expectedVersion;
                Events          = events;
            }
예제 #26
0
        public Task DeleteStreamAsync(string stream, int expectedVersion)
        {
            Ensure.NotNullOrEmpty(stream, "stream");

            var source    = new TaskCompletionSource <object>();
            var operation = new DeleteStreamOperation(source, Guid.NewGuid(), stream, expectedVersion);

            EnqueueOperation(operation);
            return(source.Task);
        }
예제 #27
0
        public Task CreateStreamAsync(string stream, byte[] metadata)
        {
            Ensure.NotNullOrEmpty(stream, "stream");

            var source    = new TaskCompletionSource <object>();
            var operation = new CreateStreamOperation(source, Guid.NewGuid(), stream, metadata);

            EnqueueOperation(operation);
            return(source.Task);
        }
예제 #28
0
        public Task <EventStoreTransaction> StartTransactionAsync(string stream, int expectedVersion)
        {
            Ensure.NotNullOrEmpty(stream, "stream");

            var source    = new TaskCompletionSource <EventStoreTransaction>();
            var operation = new StartTransactionOperation(source, Guid.NewGuid(), stream, expectedVersion);

            EnqueueOperation(operation);
            return(source.Task);
        }
예제 #29
0
        public Task CommitTransactionAsync(long transactionId, string stream)
        {
            Ensure.NotNullOrEmpty(stream, "stream");

            var source    = new TaskCompletionSource <object>();
            var operation = new CommitTransactionOperation(source, Guid.NewGuid(), transactionId, stream);

            EnqueueOperation(operation);
            return(source.Task);
        }
예제 #30
0
        public Task <AllEventsSlice> ReadAllEventsBackwardAsync(Position position, int maxCount)
        {
            Ensure.NotNull(position, "position");
            Ensure.Positive(maxCount, "maxCount");

            var source    = new TaskCompletionSource <AllEventsSlice>();
            var operation = new ReadAllEventsBackwardOperation(source, Guid.NewGuid(), position, maxCount, true);

            EnqueueOperation(operation);
            return(source.Task);
        }