예제 #1
0
        // Token: 0x06000ADA RID: 2778 RVA: 0x00046E2C File Offset: 0x0004502C
        internal void EnqueueMailbox(MailboxInfo mailbox, MailboxSession mailboxSession)
        {
            ExTraceGlobals.MWITracer.TraceDebug <MailboxInfo, MailboxSession>((long)this.GetHashCode(), "MwiDelayTable.EnqueueMailbox({0}, {1})", mailbox, mailboxSession);
            bool flag = false;

            MwiDelayTable.DelayTableEntry delayTableEntry;
            lock (this)
            {
                if (!this.delayTable.TryGetValue(mailbox.Guid, out delayTableEntry))
                {
                    ExTraceGlobals.MWITracer.TraceDebug <MailboxInfo>((long)this.GetHashCode(), "MwiDelayTable: Mailbox {0} not present, processing now", mailbox);
                    flag            = true;
                    delayTableEntry = new MwiDelayTable.DelayTableEntry(mailbox);
                    this.delayTable[mailbox.Guid] = delayTableEntry;
                }
                else
                {
                    ExTraceGlobals.MWITracer.TraceDebug <MailboxInfo>((long)this.GetHashCode(), "MwiDelayTable: Mailbox {0} already present->ProcessWhenExpired=true.", mailbox);
                    delayTableEntry.ProcessWhenExpired = true;
                }
            }
            if (flag)
            {
                this.ProcessEntryAndAddToDelayQueue(delayTableEntry, mailboxSession);
            }
        }
예제 #2
0
 // Token: 0x06000ADC RID: 2780 RVA: 0x000470AC File Offset: 0x000452AC
 private void ProcessEntryAndAddToDelayQueue(MwiDelayTable.DelayTableEntry entry, MailboxSession mailboxSession)
 {
     ExTraceGlobals.MWITracer.TraceDebug <MailboxInfo>((long)this.GetHashCode(), "MwiDelayTable.ProcessEntryAndAddToDelayQueue: Processing {0}", entry.Mailbox);
     this.processMailboxCallback(entry.Mailbox, mailboxSession);
     lock (this)
     {
         ExTraceGlobals.MWITracer.TraceDebug <MailboxInfo>((long)this.GetHashCode(), "MwiDelayTable.ProcessEntryAndAddToDelayQueue: Adding {0} to delay queue.", entry.Mailbox);
         this.delayQueue.Enqueue(entry);
     }
 }