Beispiel #1
0
        public void UpdateSnapshot()
        {
            var snapshotId = _snapshotResolver.ResolveSnapshotSetup();

            var writer = new SnapshotWriter();

            // record the current snapshot
            var data  = "this is\r\na\r\ntest";
            var token = SnapshotTokenizer.Tokenize(data);

            writer.Write(token, snapshotId);

            // ensure the data matches
            data.MatchSnapshot();

            data  = "this is\r\nnew\r\ndata";
            token = SnapshotTokenizer.Tokenize(data);
            writer.Write(token, snapshotId);

            // ensure the data is updated
            data.MatchSnapshot();

            //delete file and folder
            System.IO.File.Delete(snapshotId.GetFilePath());
        }
Beispiel #2
0
        public void SaveSnapshots()
        {
            var snapshotId = _snapshotResolver.ResolveSnapshotSetup();

            var writer = new SnapshotWriter();

            // record the current snapshot
            var dataOne = "this is\r\na\r\ntest";
            var token   = SnapshotTokenizer.Tokenize(dataOne)
                          .SetMetadata(() => new { id = "one" });

            writer.Write(token, snapshotId);

            var dataTwo = "this is\r\na second\r\ntest";

            token = SnapshotTokenizer.Tokenize(dataTwo)
                    .SetMetadata(() => new { id = "two" });

            writer.Write(token, snapshotId);

            // ensure there are 2 snapshots in the file
            var reader = new SnapshotReader();
            var saved  = reader.Read(snapshotId);

            saved.Count().Should().Be(2);

            // match the snapshots
            dataOne.MatchSnapshot(() => new { id = "one" });
            dataTwo.MatchSnapshot(() => new { id = "two" });

            //delete file and folder
            System.IO.File.Delete(snapshotId.GetFilePath());
        }
Beispiel #3
0
 public void CreateSnapshot(long index, long term, ManualResetEventSlim allowFurtherModifications)
 {
     _snapshot = new SnapshotWriter(this, new Dictionary <string, int>(Data))
     {
         Term  = term,
         Index = index
     };
     allowFurtherModifications.Set();
 }
		public void CreateSnapshot(long index, long term, ManualResetEventSlim allowFurtherModifications)
		{
			_snapshot = new SnapshotWriter(this, new Dictionary<string, int>(Data))
			{
				Term = term,
				Index = index
			};
			allowFurtherModifications.Set();
		}
Beispiel #5
0
        /// <summary>
        /// Initializes the logging of a new Simulation
        /// </summary>
        /// <param name="destination">Where to save the data</param>
        /// <param name="disease">The Disease used in the Simulation</param>
        public void Initialize(string destination, Disease disease, int mapX, int mapY, int simintervall, int snapintervall, long duration)
        {
            _simInfo = SimulationInfo.InitializeFromRuntime(disease, mapX, mapY, simintervall, snapintervall, duration);

            _target = destination;
            _snapshots = new Queue<TickSnapshot>();

            _writer = new SnapshotWriter();
            _writer.QueueEmptied += (s, e) => WriterQueueEmpty.Raise(s, e);
            _writer.SnapshotWritten += (s, e) => SnapshotWritten.Raise(s, e);
            TookSnapshot += _writer.Recieve;
        }
Beispiel #6
0
        public void ApplySnapshot(long term, long index, Stream stream)
        {
            if (stream.CanSeek)
            {
                stream.Position = 0;
            }

            using (var streamReader = new StreamReader(stream))
                Data = new ConcurrentDictionary <string, int>(_serializer.Deserialize <Dictionary <string, int> >(new JsonTextReader(streamReader)));

            _snapshot = new SnapshotWriter(this, new Dictionary <string, int>(Data))
            {
                Term  = term,
                Index = index
            };
        }
Beispiel #7
0
        public void SaveSnapshot()
        {
            var data = "this is\r\na\r\ntest";

            var snapshotId = _snapshotResolver.ResolveSnapshotSetup();
            var token      = SnapshotTokenizer.Tokenize(data);

            var writer = new SnapshotWriter();

            writer.Write(token, snapshotId);

            //reload snapshot to compare
            data.MatchSnapshot();

            //delete file and folder
            System.IO.File.Delete(snapshotId.GetFilePath());
        }
        internal override void Invoke(string eventTopic, object source, object e)
        {
            SnapshotWriter snapshotWriter = null;

            base.MailItem = SmtpReceiveAgent.GetMailItem((EventArgs)e);
            if (base.MailItem != null && base.MailItem.SnapshotWriter != null && base.MailItem.PipelineTracingEnabled && base.SnapshotEnabled)
            {
                base.SnapshotWriter = base.MailItem.SnapshotWriter;
                this.WriteOriginalDataSnapshot(source, (EventArgs)e, eventTopic);
                snapshotWriter      = base.SnapshotWriter;
                base.SnapshotWriter = null;
            }
            Delegate @delegate = (Delegate)base.Handlers[eventTopic];

            if (@delegate == null)
            {
                return;
            }
            switch (eventTopic)
            {
            case "OnAuthCommand":
                ((AuthCommandEventHandler)@delegate)((ReceiveCommandEventSource)source, (AuthCommandEventArgs)e);
                break;

            case "OnDataCommand":
                if (!((ReceiveCommandEventSource)source).SmtpSession.DiscardingMessage)
                {
                    ((SmtpServer)this.HostState).AddressBook.RecipientCache = base.MailItem.RecipientCache;
                    ((DataCommandEventHandler)@delegate)((ReceiveCommandEventSource)source, (DataCommandEventArgs)e);
                }
                break;

            case "OnEhloCommand":
                ((EhloCommandEventHandler)@delegate)((ReceiveCommandEventSource)source, (EhloCommandEventArgs)e);
                break;

            case "OnProcessAuthentication":
                ((ProcessAuthenticationEventHandler)@delegate)((ReceiveCommandEventSource)source, (ProcessAuthenticationEventArgs)e);
                break;

            case "OnEndOfAuthentication":
                ((EndOfAuthenticationEventHandler)@delegate)((EndOfAuthenticationEventSource)source, (EndOfAuthenticationEventArgs)e);
                break;

            case "OnEndOfData":
                if (!((ReceiveMessageEventSource)source).SmtpSession.DiscardingMessage)
                {
                    base.SnapshotWriter = snapshotWriter;
                    ((SmtpServer)this.HostState).AddressBook.RecipientCache = base.MailItem.RecipientCache;
                    base.EventArgId = ((ReceiveEventSource)source).SmtpSession.CurrentMessageTemporaryId;
                    if (base.SnapshotWriter != null)
                    {
                        base.SnapshotWriter.WritePreProcessedData(this.GetHashCode(), "SmtpReceive", base.EventArgId, eventTopic, base.MailItem);
                    }
                    ((EndOfDataEventHandler)@delegate)((ReceiveMessageEventSource)source, (EndOfDataEventArgs)e);
                    if (base.Synchronous)
                    {
                        base.EnsureMimeWriteStreamClosed();
                        if (base.SnapshotWriter != null)
                        {
                            base.SnapshotWriter.WriteProcessedData("SmtpReceive", base.EventArgId, eventTopic, base.Name, base.MailItem);
                        }
                    }
                }
                break;

            case "OnEndOfHeaders":
                if (!((ReceiveMessageEventSource)source).SmtpSession.DiscardingMessage)
                {
                    base.SnapshotWriter = snapshotWriter;
                    ((SmtpServer)this.HostState).AddressBook.RecipientCache = base.MailItem.RecipientCache;
                    base.EventArgId = ((ReceiveEventSource)source).SmtpSession.CurrentMessageTemporaryId;
                    if (base.SnapshotWriter != null)
                    {
                        base.SnapshotWriter.WritePreProcessedData(this.GetHashCode(), "SmtpReceive", base.EventArgId, eventTopic, base.MailItem);
                    }
                    ((EndOfHeadersEventHandler)@delegate)((ReceiveMessageEventSource)source, (EndOfHeadersEventArgs)e);
                    if (base.Synchronous && base.SnapshotWriter != null)
                    {
                        ReceiveMessageEventSource receiveMessageEventSource = (ReceiveMessageEventSource)source;
                        base.SnapshotWriter.WriteProcessedData("SmtpReceive", base.EventArgId, eventTopic, base.Name, base.MailItem);
                    }
                }
                break;

            case "OnHeloCommand":
                ((HeloCommandEventHandler)@delegate)((ReceiveCommandEventSource)source, (HeloCommandEventArgs)e);
                break;

            case "OnHelpCommand":
                ((HelpCommandEventHandler)@delegate)((ReceiveCommandEventSource)source, (HelpCommandEventArgs)e);
                break;

            case "OnMailCommand":
                ((MailCommandEventHandler)@delegate)((ReceiveCommandEventSource)source, (MailCommandEventArgs)e);
                break;

            case "OnNoopCommand":
                ((NoopCommandEventHandler)@delegate)((ReceiveCommandEventSource)source, (NoopCommandEventArgs)e);
                break;

            case "OnRcptCommand":
                ((SmtpServer)this.HostState).AddressBook.RecipientCache = base.MailItem.RecipientCache;
                ((RcptCommandEventHandler)@delegate)((ReceiveCommandEventSource)source, (RcptCommandEventArgs)e);
                break;

            case "OnRcpt2Command":
                ((SmtpServer)this.HostState).AddressBook.RecipientCache = base.MailItem.RecipientCache;
                ((Rcpt2CommandEventHandler)@delegate)((ReceiveCommandEventSource)source, (Rcpt2CommandEventArgs)e);
                break;

            case "OnReject":
                ((RejectEventHandler)@delegate)((RejectEventSource)source, (RejectEventArgs)e);
                break;

            case "OnRsetCommand":
                ((RsetCommandEventHandler)@delegate)((ReceiveCommandEventSource)source, (RsetCommandEventArgs)e);
                break;

            case "OnConnectEvent":
                ((ConnectEventHandler)@delegate)((ConnectEventSource)source, (ConnectEventArgs)e);
                break;

            case "OnDisconnectEvent":
                ((DisconnectEventHandler)@delegate)((DisconnectEventSource)source, (DisconnectEventArgs)e);
                break;

            case "OnStartTlsCommand":
                ((StartTlsEventHandler)@delegate)((ReceiveCommandEventSource)source, (StartTlsCommandEventArgs)e);
                break;

            case "OnProxyInboundMessage":
                ((ProxyInboundMessageEventHandler)@delegate)((ProxyInboundMessageEventSource)source, (ProxyInboundMessageEventArgs)e);
                break;

            case "OnXSessionParamsCommand":
                ((XSessionParamsCommandEventHandler)@delegate)((ReceiveCommandEventSource)source, (XSessionParamsCommandEventArgs)e);
                break;
            }
            if (base.Synchronous)
            {
                ((SmtpServer)this.HostState).AddressBook.RecipientCache = null;
                base.EventArgId     = null;
                base.SnapshotWriter = null;
                base.MailItem       = null;
            }
        }
		public void ApplySnapshot(long term, long index, Stream stream)
		{
			if(stream.CanSeek)
				stream.Position = 0;
			
			using (var streamReader = new StreamReader(stream))
				Data = new ConcurrentDictionary<string, int>(_serializer.Deserialize<Dictionary<string, int>>(new JsonTextReader(streamReader)));

			_snapshot = new SnapshotWriter(this, new Dictionary<string, int>(Data))
			{
				Term = term,
				Index = index
			};
		}