/// <summary> /// Registers NiawaTreeModelAdapter with the provider /// </summary> /// <param name="adapter"></param> public static void RegisterNiawaTreeModelAdapter(NiawaIpcEventTreeModelAdapter adapter, string callerSessionID) { try { //_adapter = adapter; //initialize adapter pool if null if (_adapterPool == null) InitializeNiawaTreeModelAdapterPool(); //remove from pool if already exists if (_adapterPool.ContainsAdapter(callerSessionID)) _adapterPool.RemoveAdapter(callerSessionID); //add to pool _adapterPool.AddAdapter(callerSessionID, adapter); //remove inactive sessions _adapterPool.RemoveInactiveAdapters(); //remove oldest sessions when there are too many _adapterPool.RemoveOverflowAdapters(); } catch (Exception ex) { Trace.TraceError("NiawaResourceProvider: Could not register Tree Model Adapter: " + ex.Message); } }
/// <summary> /// Retrieves or creates a TreeModelAdapter for the specified caller /// </summary> /// <param name="callerSessionID"></param> /// <returns></returns> private NiawaIpcEventTreeModelAdapter RetrieveTreeModelAdapter(string callerSessionID) { //check if there is an existing Tree Model Adapter NiawaIpcEventTreeModelAdapter treeModelAdapter = NiawaResourceProvider.RetrieveNiawaTreeModelAdapter(callerSessionID); if (treeModelAdapter == null) { //get Tree Model Adapter Pool NiawaIpcEventTreeModelAdapterPool pool = NiawaResourceProvider.RetrieveNiawaTreeModelAdapterPool(); //create tree model adapter Trace.TraceInformation("NiawaSRHub [" + callerSessionID + "]: Creating Tree Model Adapter"); treeModelAdapter = new NiawaIpcEventTreeModelAdapter(this, pool, callerSessionID); //start tree model adapter Trace.TraceInformation("NiawaSRHub [" + callerSessionID + "]: Starting Tree Model Adapter"); treeModelAdapter.Start(true); //register it with resource provider Trace.TraceInformation("NiawaSRHub [" + callerSessionID + "]: Registering Tree Model Adapter with provider"); NiawaResourceProvider.RegisterNiawaTreeModelAdapter(treeModelAdapter, callerSessionID); } else { //use existing tree model adapter Trace.TraceInformation("NiawaSRHub [" + callerSessionID + "]: Using existing Tree Model Adapter"); } return treeModelAdapter; }