Exemple #1
0
        private SynchronizeResult TryCallSynchronizersBeforeEventPersisting(EventStream eventStream)
        {
            var result = new SynchronizeResult {
                Status = SynchronizeStatus.Success
            };

            foreach (var evnt in eventStream.Events)
            {
                var synchronizers = _eventSynchronizerProvider.GetSynchronizers(evnt.GetType());
                foreach (var synchronizer in synchronizers)
                {
                    try
                    {
                        synchronizer.OnBeforePersisting(evnt);
                    }
                    catch (Exception ex)
                    {
                        var errorMessage = string.Format(
                            "Exception raised when calling synchronizer's OnBeforePersisting method. synchronizer:{0}, events:{1}",
                            synchronizer.GetInnerSynchronizer().GetType().Name,
                            eventStream.GetStreamInformation());
                        _logger.Error(errorMessage, ex);
                        result.ErrorInfo = new ErrorInfo(errorMessage, ex);
                        if (ex is ConcurrentException)
                        {
                            result.Status = SynchronizeStatus.SynchronizerConcurrentException;
                            return(result);
                        }
                        result.Status = SynchronizeStatus.Failed;
                        return(result);
                    }
                }
            }

            return(result);
        }
Exemple #2
0
        public void SynchronizeReply(byte isMonitering, Dictionary <long, byte> result)
        {
            SynchronizeResult synchronizeResult = new SynchronizeResult(isMonitering, result);

            this.Transmit(synchronizeResult.Serialize());
        }
        private SynchronizeResult SyncBeforeEventPersisting(EventStream eventStream)
        {
            var result = new SynchronizeResult { Status = SynchronizeStatus.Success };

            foreach (var evnt in eventStream.Events)
            {
                var synchronizers = _eventSynchronizerProvider.GetSynchronizers(evnt.GetType());
                foreach (var synchronizer in synchronizers)
                {
                    try
                    {
                        synchronizer.OnBeforePersisting(evnt);
                    }
                    catch (ConcurrentException)
                    {
                        result.Status = SynchronizeStatus.SynchronizerConcurrentException;
                        return result;
                    }
                    catch (DomainException domainException)
                    {
                        var errorMessage = string.Format("{0} raised when calling synchronizer's OnBeforePersisting method. synchronizer:{1}, events:{2}, errorMessage:{3}",
                            domainException.GetType().Name,
                            synchronizer.GetInnerSynchronizer().GetType().Name,
                            eventStream,
                            domainException.Message);
                        _logger.Error(errorMessage, domainException);
                        result.Status = SynchronizeStatus.Failed;
                        result.ExceptionCode = domainException.Code;
                        result.ErrorMessage = domainException.Message;
                        return result;
                    }
                    catch (Exception ex)
                    {
                        var errorMessage = string.Format("{0} raised when calling synchronizer's OnBeforePersisting method. synchronizer:{1}, events:{2}, errorMessage:{3}",
                            ex.GetType().Name,
                            synchronizer.GetInnerSynchronizer().GetType().Name,
                            eventStream,
                            ex.Message);
                        _logger.Error(errorMessage, ex);
                        result.Status = SynchronizeStatus.Failed;
                        result.ErrorMessage = ex.Message;
                        return result;
                    }
                }
            }

            return result;
        }