Exemplo n.º 1
0
        private StreamLogItem.LogItemAttachment InitializeSubAttachment(int workerId)
        {
            string text = workerId.ToString();

            StreamLogItem.LogItemAttachment logItemAttachment = new StreamLogItem.LogItemAttachment();
            logItemAttachment.Id                  = workerId;
            logItemAttachment.Name                = text;
            logItemAttachment.Attachment          = (StreamAttachment)this.MessageItem.AttachmentCollection.Create(AttachmentType.Stream);
            logItemAttachment.Attachment.FileName = text + ".csv";
            logItemAttachment.Attachment[AttachmentSchema.DisplayName] = text;
            logItemAttachment.AttachmentStream = new StreamWriter(new GZipStream(logItemAttachment.Attachment.GetContentStream(), CompressionMode.Compress));
            return(logItemAttachment);
        }
Exemplo n.º 2
0
 internal void ConsolidateLog(int workerId, bool merge)
 {
     lock (this.mailboxSession.Value)
     {
         if (this.subAttachments.Count != 0)
         {
             if (this.Attachment == null)
             {
                 this.InitializeMainAttachment();
             }
             StreamLogItem.LogItemAttachment logItemAttachment = null;
             this.subAttachments.TryGetValue(workerId, out logItemAttachment);
             if (logItemAttachment != null)
             {
                 this.RemoveSubAttachment(logItemAttachment, merge);
             }
         }
     }
 }
Exemplo n.º 3
0
 internal void WriteLogs(List <StreamLogItem.LogItem> logList)
 {
     lock (this.mailboxSession.Value)
     {
         foreach (StreamLogItem.LogItem logItem in logList)
         {
             StreamLogItem.LogItemAttachment subAttachment = null;
             this.subAttachments.TryGetValue(logItem.WorkerId, out subAttachment);
             if (subAttachment == null)
             {
                 subAttachment = this.InitializeSubAttachment(logItem.WorkerId);
                 this.subAttachments.Add(logItem.WorkerId, subAttachment);
             }
             logItem.Logs.ForEach(delegate(LocalizedString x)
             {
                 subAttachment.AttachmentStream.WriteLine(x.ToString());
             });
         }
     }
 }
Exemplo n.º 4
0
        private void RemoveSubAttachment(StreamLogItem.LogItemAttachment subAttachment, bool merge)
        {
            Stream baseStream = subAttachment.AttachmentStream.BaseStream;

            subAttachment.AttachmentStream.Flush();
            subAttachment.AttachmentStream.Dispose();
            baseStream.Dispose();
            subAttachment.Attachment.Save();
            subAttachment.Attachment.Load();
            if (merge)
            {
                using (StreamAttachment streamAttachment = (StreamAttachment)this.MessageItem.AttachmentCollection.Open(subAttachment.Attachment.Id))
                {
                    using (GZipStream gzipStream = new GZipStream(streamAttachment.GetContentStream(), CompressionMode.Decompress))
                    {
                        using (StreamReader streamReader = new StreamReader(gzipStream))
                        {
                            string value;
                            while ((value = streamReader.ReadLine()) != null)
                            {
                                this.AttachmentStream.WriteLine(value);
                            }
                        }
                    }
                }
            }
            this.MessageItem.AttachmentCollection.Remove(subAttachment.Attachment.Id);
            this.MessageItem.Save(SaveMode.NoConflictResolutionForceSave);
            this.MessageItem.Load();
            int id = subAttachment.Id;

            subAttachment.AttachmentStream.Dispose();
            subAttachment.AttachmentStream = null;
            subAttachment.Attachment.Dispose();
            subAttachment.Attachment = null;
            subAttachment            = null;
            this.subAttachments.Remove(id);
        }