Esempio n. 1
0
        public void TestSerializationToMultipleFileLogs()
        {
            var log1    = new FileLog(Path.GetTempFileName());
            var log2    = new FileLog(Path.GetTempFileName());
            var builder = new LoggedFileBuilder(log1);

            builder.Append(new ByteArray(new byte[] { 0, 1, 2, 3, 4, 5 }));
            var file        = builder.Close();
            var channelHint = log2.AddChannel();

            log2.LogEvent(channelHint, new Event(1, EventType.RequestReceived, new Netool.Network.DataEventArgs {
                Data = file, State = null
            }, DateTime.Now));
            log2.LogEvent(channelHint, new Event(2, EventType.RequestReceived, new Netool.Network.DataEventArgs {
                Data = file, State = null
            }, DateTime.Now));
            using (var reader = log2.CreateReader())
            {
                var e1 = reader.ReadEvent(channelHint, 1);
                var e2 = reader.ReadEvent(channelHint, 2);
                Assert.Equal(file.Length, e1.Data.Data.Length);
                Assert.Equal(3, e1.Data.Data.ReadByte(3));
                // check that it isn't copied repeatedly
                Assert.True(((IEquatable <LoggedFile>)e1.Data.Data).Equals((LoggedFile)e2.Data.Data));
            }

            log1.DeleteFile();
            log2.DeleteFile();
        }
Esempio n. 2
0
        private void OnSerializing(StreamingContext context)
        {
            var log = (context.Context as FileLog.SerializationContext).Log;

            if (!(innerStream is LoggedFile))
            {
                var builder = new LoggedFileBuilder(log);
                builder.Append(innerStream);
                innerStream = builder.Close();
            }
        }
Esempio n. 3
0
 /// <summary>
 /// Appends data to builded stream
 /// </summary>
 /// <remarks>
 /// With large lengthThreshold it will take a while to create the LoggedFile.
 /// </remarks>
 /// <param name="data"></param>
 /// <exception cref="ArgumentNullException">data</exception>
 public void Append(IDataStream data)
 {
     if (data == null)
     {
         throw new ArgumentNullException("data");
     }
     if (length >= threshold)
     {
         fileBuilder.Append(data);
     }
     else if (length + data.Length >= threshold)
     {
         fileBuilder = logger.CreateFileBuilder();
         fileBuilder.Append(list);
         fileBuilder.Append(data);
         list = null;
     }
     else
     {
         list.Add((IDataStream)data.Clone());
     }
     length += data.Length;
 }