예제 #1
0
        /// <summary>
        /// Build & return the full MetaTree
        /// </summary>
        ///
        public Dictionary <string, MetaTreeNode> GetMetaTree2()
        {
            if (ServiceFacade.UseRemoteServices)
            {
                NativeMethodTransportObject resultObject = ServiceFacade.CallServiceMethod(
                    ServiceCodes.MobiusMetaDataService,
                    MobiusMetaDataService.Build,
                    new object[] { false });

                // Get the cache from the server if newer than the client cache

                string cacheFile       = ServicesIniFile.Read("CachedTreeFile", DefaultCachedTreeFile);
                string serverCacheFile = @"<MetaDataDir>\MetaTrees\" + cacheFile;

                string clientCacheFile = ClientDirs.CacheDir + @"\" + cacheFile;
                //ServerFile.Get(serverCacheFile, clientCacheFile); // debug, always get
                bool changed = ServerFile.GetIfChanged(serverCacheFile, clientCacheFile);                 // just get if changed

                // Build the tree from the local copy of the cache

                MetaFactoryNamespace.MetaTreeFactory.BuildFromCache(ClientDirs.CacheDir, false);

                return(Mfn.MetaTreeFactory.Nodes);
            }

            else
            {
                Mfn.MetaTreeFactory.Build();
                return(Mfn.MetaTreeFactory.Nodes);
            }
        }
예제 #2
0
        /// <summary>
        /// Load/reload from specified file
        /// </summary>

        public void BuildFromFile(string fileName)
        {
            if (ServiceFacade.UseRemoteServices)
            {
                MetaTableCollection.Reset();                 // reset local collection

                string serverFile = ServerFile.GetTempFileName(".xml", true);
                ServerFile.CopyToServer(fileName, serverFile);
                Services.Native.INativeSession nativeClient = ServiceFacade.CreateNativeSessionProxy();
                Services.Native.NativeMethodTransportObject resultObject =
                    nativeClient.InvokeNativeMethod(
                        (int)Services.Native.ServiceCodes.MobiusMetaTableService,
                        (int)Services.Native.ServiceOpCodes.MobiusMetaTableService.BuildFromFile,
                        new Mobius.Services.Native.NativeMethodTransportObject(new object[] { serverFile }));
                ((System.ServiceModel.IClientChannel)nativeClient).Close();
            }

            else             // just do local build
            {
                Mobius.MetaFactoryNamespace.MetaTableFactory.BuildFromXmlFile(fileName);
            }
        }