Exemple #1
0
        public IMExSession CreateSession(ICloneableInternal state, string name, Action startAsyncAgentCallback, Action completeAsyncAgentCallback, Func <bool> resumeAgentCallback)
        {
            if (this.runtimeState != 1)
            {
                ExTraceGlobals.InitializeTracer.TraceError <int>((long)this.GetHashCode(), this.InstanceNameFormatted + "invalid state for initialization: {0}", this.runtimeState);
                throw new InvalidOperationException(MExRuntimeStrings.InvalidState);
            }
            MExSession mexSession = new MExSession(this.settings, state, name, this.GetHashCode().ToString(), startAsyncAgentCallback, completeAsyncAgentCallback, resumeAgentCallback);

            this.perfCounters.Subscribe(mexSession.Dispatcher);
            return(mexSession);
        }
Exemple #2
0
        private MExSession(IRuntimeSettings settings, ICloneableInternal state, string name, string parentName, AgentRecord[] agentsInDefaultOrder, AgentRecord[] publicAgentsInDefaultOrder, Action startAsyncAgentCallback, Action completeAsyncAgentCallback, Func <bool> resumeAgentCallback)
        {
            settings.AddSessionRef();
            this.settings   = settings;
            this.hostState  = state;
            this.name       = name;
            this.parentName = parentName;
            this.id         = this.GetHashCode().ToString(CultureInfo.InvariantCulture);
            string str = string.IsNullOrEmpty(parentName) ? null : (parentName + ".");
            string arg = str + this.id;

            this.InstanceNameFormatted = string.Format("[{0}][{1}] ", "MExSession", arg);
            this.isCompleted           = true;
            if (agentsInDefaultOrder == null)
            {
                agentsInDefaultOrder       = this.settings.CreateDefaultAgentOrder();
                publicAgentsInDefaultOrder = new AgentRecord[this.settings.PublicAgentsInDefaultOrder.Length];
                int num = 0;
                for (int i = 0; i < agentsInDefaultOrder.Length; i++)
                {
                    agentsInDefaultOrder[i].Instance = this.CreateAgentInstance(agentsInDefaultOrder[i]);
                    agentsInDefaultOrder[i].Enabled  = this.IsAgentEnabled(agentsInDefaultOrder[i]);
                    if (!agentsInDefaultOrder[i].IsInternal)
                    {
                        publicAgentsInDefaultOrder[num] = agentsInDefaultOrder[i];
                        num++;
                    }
                }
            }
            if (ExTraceGlobals.DispatchTracer.IsTraceEnabled(TraceType.DebugTrace))
            {
                foreach (AgentRecord agentRecord in agentsInDefaultOrder)
                {
                    if (agentRecord.Enabled)
                    {
                        ExTraceGlobals.DispatchTracer.TraceDebug <string, string>((long)this.GetHashCode(), this.InstanceNameFormatted + "{0} ({1})", agentRecord.Instance.GetType().FullName, agentRecord.Instance.Id);
                    }
                }
            }
            this.agentsInDefaultOrder       = agentsInDefaultOrder;
            this.publicAgentsInDefaultOrder = publicAgentsInDefaultOrder;
            this.startAsyncAgentCallback    = startAsyncAgentCallback;
            this.completeAsyncAgentCallback = completeAsyncAgentCallback;
            this.resumeAgentCallback        = resumeAgentCallback;
            this.scheduleWorkDelegate       = new MExSession.ScheduleWork(ThreadPool.QueueUserWorkItem);
            this.dispatcher     = new Dispatcher(this.settings, this.agentsInDefaultOrder, arg);
            this.disposeTracker = DisposeTracker.Get <MExSession>(this);
            ExTraceGlobals.DispatchTracer.TraceDebug <string>((long)this.GetHashCode(), this.InstanceNameFormatted + "created '{0}'", this.Name);
        }
Exemple #3
0
 internal MExSession(IRuntimeSettings settings, ICloneableInternal state, string name, string parentName, Action startAsyncAgentCallback, Action completeAsyncAgentCallback, Func <bool> resumeAgentCallback) : this(settings, state, name, parentName, null, null, startAsyncAgentCallback, completeAsyncAgentCallback, resumeAgentCallback)
 {
 }
Exemple #4
0
 internal MExSession(IRuntimeSettings settings, ICloneableInternal state, string name, string parentName) : this(settings, state, name, parentName, null, null, null)
 {
 }
Exemple #5
0
 public IMExSession CreateSession(ICloneableInternal state, string name, Func <bool> resumeAgentCallback)
 {
     return(this.CreateSession(state, name, null, null, resumeAgentCallback));
 }
Exemple #6
0
 public IMExSession CreateSession(ICloneableInternal state, string name)
 {
     return(this.CreateSession(state, name, null, null, null));
 }