e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
82 lines
2.7 KiB
C#
82 lines
2.7 KiB
C#
//------------------------------------------------------------
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//------------------------------------------------------------
|
|
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using System.Diagnostics;
|
|
using System.Globalization;
|
|
using System.Workflow.ComponentModel;
|
|
using System.Runtime.Serialization;
|
|
|
|
namespace System.Workflow.Runtime
|
|
{
|
|
[Serializable]
|
|
internal sealed class EventQueueState
|
|
{
|
|
Queue deliveredMessages;
|
|
List<ActivityExecutorDelegateInfo<QueueEventArgs>> synchronousListeners;
|
|
List<ActivityExecutorDelegateInfo<QueueEventArgs>> asynchronousListeners;
|
|
bool enabled = true;
|
|
bool transactional = true;
|
|
|
|
[NonSerialized]
|
|
internal IComparable queueName;
|
|
|
|
[NonSerialized]
|
|
bool dirty = false; // dirty flag set to true until a transaction completes
|
|
|
|
internal EventQueueState()
|
|
{
|
|
this.deliveredMessages = new Queue();
|
|
this.synchronousListeners = new List<ActivityExecutorDelegateInfo<QueueEventArgs>>();
|
|
this.asynchronousListeners = new List<ActivityExecutorDelegateInfo<QueueEventArgs>>();
|
|
}
|
|
|
|
internal Queue Messages
|
|
{
|
|
get { return this.deliveredMessages; }
|
|
}
|
|
internal List<ActivityExecutorDelegateInfo<QueueEventArgs>> AsynchronousListeners
|
|
{
|
|
get { return this.asynchronousListeners; }
|
|
}
|
|
internal List<ActivityExecutorDelegateInfo<QueueEventArgs>> SynchronousListeners
|
|
{
|
|
get { return this.synchronousListeners; }
|
|
}
|
|
internal bool Enabled
|
|
{
|
|
get { return this.enabled; }
|
|
set { this.enabled = value; }
|
|
}
|
|
internal bool Transactional
|
|
{
|
|
get { return this.transactional; }
|
|
set { this.transactional = value; }
|
|
}
|
|
|
|
internal bool Dirty
|
|
{
|
|
get { return this.dirty; }
|
|
set { this.dirty = value; }
|
|
}
|
|
|
|
internal void CopyFrom(EventQueueState copyFromState)
|
|
{
|
|
this.deliveredMessages = new Queue(copyFromState.Messages);
|
|
|
|
// don't copy Subscribers since this gets fixed
|
|
// up at access time based on these tracking context ints
|
|
this.asynchronousListeners.AddRange(copyFromState.AsynchronousListeners.ToArray());
|
|
this.synchronousListeners.AddRange(copyFromState.SynchronousListeners.ToArray());
|
|
|
|
this.enabled = copyFromState.Enabled;
|
|
this.transactional = copyFromState.Transactional;
|
|
this.dirty = false;
|
|
}
|
|
}
|
|
|
|
}
|