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); }
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); }
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) { }
internal MExSession(IRuntimeSettings settings, ICloneableInternal state, string name, string parentName) : this(settings, state, name, parentName, null, null, null) { }
public IMExSession CreateSession(ICloneableInternal state, string name, Func <bool> resumeAgentCallback) { return(this.CreateSession(state, name, null, null, resumeAgentCallback)); }
public IMExSession CreateSession(ICloneableInternal state, string name) { return(this.CreateSession(state, name, null, null, null)); }