/// <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); } }
/// <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); } }