private boolean isCodecG729Installed() { List<Location> locations = getLocationsManager().getLocationsForService(this); String serviceUri = null; FreeswitchApi api = null; String result = null; for (Location location : locations) { if (getSipxServiceManager().isServiceInstalled(location.getId(), BEAN_ID)) { serviceUri = getServiceUri(location); api = m_freeswitchApiProvider.getApi(serviceUri); try { result = api.g729_status(); if (StringUtils.contains(result, G729_STATUS)) { return true; } // try also new FS detection algorithm result = api.g729_available(); if (StringUtils.contains(result, "true")) { return true; } } catch (XmlRpcRemoteException xrre) { LOG.error(xrre); return false; } } } return false; }
private void reloadXmlWithRetries(Location location) { boolean success = false; int maxRetries = 3; int retry = 0; if (!isRunning(location)) { // no need to reloadXml if the service is not running at the moment return; } Serializable jobId = m_jobContext.schedule(RELOAD_XML_JOB_TITLE); m_jobContext.start(jobId); String serviceUri = getServiceUri(location); FreeswitchApi api = m_freeswitchApiProvider.getApi(serviceUri); while ((retry <= maxRetries) && !success) { LOG.debug("reloadXmlWithRetries() while loop retry:" + retry); try { api.reloadxml(); success = true; } catch (Exception ex) { LOG.debug("reloadXmlWithRetries() caught Exception:" + ex); } finally { if (success) { m_jobContext.success(jobId); } else { LOG.debug("reloadXmlWithRetries() failed at retry " + retry); if (retry == maxRetries) { // failed after retry maxRetries so just give up LOG.error("reloadXmlWithRetries() gives up after retry " + retry); m_jobContext.failure(jobId, null, null); } else { retry++; // retry but sleep for a while try { Thread.sleep(2000); } catch (InterruptedException e) { continue; } } } } } LOG.debug("reloadXmlWithRetries() return success at retry " + retry); }
private void reloadXml(Location location) { if (!isRunning(location)) { // no need to reloadXml if the service is not running at the moment return; } boolean success = false; Serializable jobId = m_jobContext.schedule(RELOAD_XML_JOB_TITLE); try { m_jobContext.start(jobId); String serviceUri = getServiceUri(location); FreeswitchApi api = m_freeswitchApiProvider.getApi(serviceUri); api.reloadxml(); success = true; } finally { if (success) { m_jobContext.success(jobId); } else { m_jobContext.failure(jobId, null, null); } } }
/** @see org.sipfoundry.sipxconfig.admin.commserver.RegistrationContext#getRegistrations() */ public List<RegistrationItem> getRegistrations() { try { Location primaryProxyLocation = m_locationsManager.getLocationByBundle("primarySipRouterBundle"); if (primaryProxyLocation == null) { LOG.error("No primary proxy found."); return Collections.emptyList(); } ImdbApi imdb = m_imdbApiProvider.getApi(primaryProxyLocation.getProcessMonitorUrl()); Location managementLocation = m_locationsManager.getLocationByBundle("managementBundle"); if (managementLocation == null) { LOG.error("No management bundle found"); return Collections.emptyList(); } List<Map<String, ?>> registrations = imdb.read(managementLocation.getFqdn(), "registration"); return getRegistrations(registrations); } catch (XmlRpcRemoteException e) { // we are handling this separately - server returns FileNotFound even if everything is // OK but we have no registrations present LOG.warn("Cannot retrieve registrations.", e); return Collections.emptyList(); } }