/// <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);
            }
        }
示例#2
0
        /// <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;
        }