private static CacheService GetCacheService(Common.CacheManagement.CacheContext context) { switch (context) { case Common.CacheManagement.CacheContext.TayzGrid: return(new JvCacheRPCService(null)); case Common.CacheManagement.CacheContext.NCache: return(new NCacheRPCService(null)); } return(null); }
internal static Dictionary <string, TopicStats> GetTopicStat(string cacheName, string initialNodeName, Common.CacheManagement.CacheContext context, int port) { CacheService cacheService = GetCacheService(context); if (port != 0) { cacheService.Port = port; } string startingNode = initialNodeName; CacheServerConfig cacheServerConfig = null; ICacheServer cacheServer = null; try { if (initialNodeName.Equals(string.Empty)) { cacheServerConfig = GetCacheConfigThroughClientConfig(cacheName, port, context); if (cacheServerConfig == null) { throw new ManagementException("cache with name " + cacheName + " not found in " + config); } } else { cacheService.ServerName = initialNodeName; cacheServer = cacheService.GetCacheServer(new TimeSpan(0, 0, 0, 30)); if (cacheServer == null) { throw new ManagementException("provided initial node not available"); } cacheServerConfig = cacheServer.GetCacheConfiguration(cacheName); if (cacheServerConfig == null) { throw new ManagementException(ErrorCodes.CacheInit.CACHE_NOT_REGISTERED_ON_NODE, ErrorMessages.GetErrorMessage(ErrorCodes.CacheInit.CACHE_NOT_REGISTERED_ON_NODE, cacheName)); } } //For Local Cache if (cacheServerConfig.CacheType.Equals(LOCALCACHE, StringComparison.OrdinalIgnoreCase)) { if (cacheServerConfig.InProc) { throw new ArgumentException("API is not supported for Local Inproc Cache"); } cacheService.ServerName = Environment.MachineName; cacheServer = cacheService.GetCacheServer(new TimeSpan(0, 0, 0, 30)); if (cacheServer != null && cacheServer.IsRunning(cacheName)) { return(cacheServer.GetTopicStats(cacheServerConfig.Name)); } } //For Clustered Cache else { Dictionary <string, TopicStats> topicWiseStat = new Dictionary <string, TopicStats>(); ArrayList initialHost = InitialHostList(cacheServerConfig.Cluster.Channel.InitialHosts); foreach (object host in initialHost) { try { cacheService.ServerName = (string)host; cacheServer = cacheService.GetCacheServer(new TimeSpan(0, 0, 0, 30)); if (cacheServer.IsRunning(cacheName)) { Dictionary <string, TopicStats> NodeWisetopicStat = cacheServer.GetTopicStats(cacheServerConfig.Name); if (NodeWisetopicStat != null) { foreach (var item in NodeWisetopicStat) { if (!topicWiseStat.ContainsKey(item.Key)) { item.Value.TopicName = item.Key; topicWiseStat.Add(item.Key, ((TopicStats)item.Value.Clone())); } else { TopicStats topicStat = topicWiseStat[item.Key]; topicStat.CurrentMessageCount += item.Value.CurrentMessageCount; } } } } } catch (Exception e) { } } return(topicWiseStat); } } catch (Exception ex) { throw new ManagementException(ex.Message); } finally { if (cacheServer != null) { cacheServer.Dispose(); } cacheService.Dispose(); } return(null); }
private static CacheServerConfig GetCacheConfigThroughClientConfig(string cacheName, int port, Common.CacheManagement.CacheContext context) { CacheServerConfig cacheServerConfig = null; ClientConfiguration.Dom.CacheServer[] serverNodes = null; ICacheServer cacheServer = null; CacheService cacheService = GetCacheService(context); if (port != 0) { cacheService.Port = port; } try { //Get Server Info from Client.nconf for specified cacheName ClientConfiguration.Dom.ClientConfiguration clientConfiguration = ClientConfiguration.ClientConfigManager.GetClientConfiguration(cacheName); if (clientConfiguration != null) { Dictionary <string, CacheConfiguration> cacheConfigurationMap = clientConfiguration.CacheConfigurationsMap; CacheConfiguration cacheClientConfiguration = null; try { cacheClientConfiguration = cacheConfigurationMap[cacheName]; } catch (System.Collections.Generic.KeyNotFoundException ex) { } if (cacheClientConfiguration == null) { throw new ManagementException("cache not found in " + config); } serverNodes = cacheClientConfiguration.Servers; foreach (ClientConfiguration.Dom.CacheServer node in serverNodes) { try { cacheService.ServerName = node.ServerName; cacheServer = cacheService.GetCacheServer(new TimeSpan(0, 0, 0, 30)); if (cacheServer != null) { cacheServerConfig = cacheServer.GetCacheConfiguration(cacheName); cacheServer.Dispose(); cacheServer = null; if (cacheServerConfig != null) { break; } } } catch (Exception ex) { } } } else { throw new ManagementException("error while fetching info from " + config); } } finally { if (cacheServer != null) { cacheServer.Dispose(); } if (cacheService != null) { cacheService.Dispose(); } } return(cacheServerConfig); }
public static Dictionary <Runtime.CacheManagement.ServerNode, List <Runtime.Caching.ClientInfo> > GetCacheClients(string cacheName, string initialNodeName, Common.CacheManagement.CacheContext context, int port) { CacheService cacheService = GetCacheService(context); if (port != 0) { cacheService.Port = port; } string startingNode = initialNodeName; Alachisoft.NCache.Config.Dom.CacheServerConfig cacheServerConfig = null; Alachisoft.NCache.Management.ICacheServer cacheServer = null; Dictionary <Runtime.CacheManagement.ServerNode, List <Runtime.Caching.ClientInfo> > clientList = new Dictionary <Runtime.CacheManagement.ServerNode, List <Runtime.Caching.ClientInfo> >(); try { if (initialNodeName.Equals(string.Empty)) { cacheServerConfig = GetCacheConfigThroughClientConfig(cacheName, port, context); if (cacheServerConfig == null) { throw new ManagementException("cache with name " + cacheName + " not found in " + config); } } else { cacheService.ServerName = initialNodeName; cacheServer = cacheService.GetCacheServer(new TimeSpan(0, 0, 0, 30)); if (cacheServer == null) { throw new ManagementException("provided initial node not available"); } cacheServerConfig = cacheServer.GetCacheConfiguration(cacheName); if (cacheServerConfig == null) { throw new ManagementException(ErrorCodes.CacheInit.CACHE_NOT_REGISTERED_ON_NODE, ErrorMessages.GetErrorMessage(ErrorCodes.CacheInit.CACHE_NOT_REGISTERED_ON_NODE, cacheName)); } } //Copied Code from NCManager //For Local Cache if (cacheServerConfig.CacheType.Equals(LOCALCACHE, StringComparison.OrdinalIgnoreCase)) { if (cacheServerConfig.InProc) { throw new ArgumentException("API is not supported for Local Inproc Cache"); } cacheService.ServerName = Environment.MachineName; cacheServer = cacheService.GetCacheServer(new TimeSpan(0, 0, 0, 30)); if (cacheServer != null) { if (cacheServer.IsRunning(cacheName)) { Runtime.CacheManagement.ServerNode serverNode = new Runtime.CacheManagement.ServerNode(); serverNode.ServerIP = Environment.MachineName; List <Alachisoft.NCache.Common.Monitoring.ClientProcessStats> clients = cacheServer.GetClientProcessStats(cacheServerConfig.Name); List <Runtime.Caching.ClientInfo> list = new List <Runtime.Caching.ClientInfo>(); foreach (Alachisoft.NCache.Common.Monitoring.ClientProcessStats clientNode in clients) { Runtime.Caching.ClientInfo clientInfo = new Runtime.Caching.ClientInfo(); clientInfo.IPAddress = clientNode.Address.IpAddress; clientInfo.ProcessID = Int32.Parse(clientNode.ProcessID); list.Add(clientInfo); } clientList.Add(serverNode, list); } } return(clientList); } //For Clustered Cache else { ArrayList initialHost = InitialHostList(cacheServerConfig.Cluster.Channel.InitialHosts); foreach (object host in initialHost) { try { cacheService.ServerName = (string)host; cacheServer = cacheService.GetCacheServer(new TimeSpan(0, 0, 0, 30)); if (cacheServer.IsRunning(cacheName)) { Runtime.CacheManagement.ServerNode serverNode = new Runtime.CacheManagement.ServerNode(); serverNode.ServerIP = host as string; serverNode.Port = cacheServerConfig.Cluster.Channel.TcpPort; List <Alachisoft.NCache.Common.Monitoring.ClientProcessStats> clients = cacheServer.GetClientProcessStats(cacheServerConfig.Name); List <Runtime.Caching.ClientInfo> list = new List <Runtime.Caching.ClientInfo>(); foreach (Alachisoft.NCache.Common.Monitoring.ClientProcessStats clientNode in clients) { Runtime.Caching.ClientInfo clientInfo = new Runtime.Caching.ClientInfo(); clientInfo.IPAddress = clientNode.Address.IpAddress; clientInfo.ProcessID = Int32.Parse(clientNode.ProcessID); list.Add(clientInfo); } clientList.Add(serverNode, list); } } catch (Exception e) { } } return(clientList); } } catch (Exception ex) { throw new ManagementException(ex.Message); } finally { if (cacheServer != null) { cacheServer.Dispose(); } cacheService.Dispose(); } }