ServiceInfo info = (ServiceInfo)getBodyObject(cmd_msg);
int status = Status.OK;
String errMsg = null;
ServiceManager sm = Globals.getServiceManager();
Service svc = null;
HAMonitorService hamonitor = Globals.getHAMonitorService();
if (hamonitor != null && hamonitor.inTakeover()) {
status = Status.ERROR;
errMsg = rb.getString(rb.E_CANNOT_PROCEED_TAKEOVER_IN_PROCESS);
logger.log(Logger.ERROR, this.getClass().getName() + ": " + errMsg);
} else {
if (info.name == null || ((svc= sm.getService(info.name)) == null)) {
status = Status.ERROR;
errMsg = rb.getString( rb.X_NO_SUCH_SERVICE,
(info.name == null ? "<null>" : info.name));
}
}
// OK .. set the service information
if (status == Status.OK) {
if (! (svc instanceof IMQService)) {
status = Status.ERROR;
errMsg = "Internal Error: can updated non-standard Service";
} else {
// XXX - really we want to do this through properties, I need
// to repair this by fcs
try {
IMQService stsvc = (IMQService)svc;
int port = -1;
int min = -1;
int max = -1;
if (info.isModified(info.PORT)) {
port = info.port;
}
if (info.isModified(info.MIN_THREADS)) {
min = info.minThreads;
}
if (info.isModified(info.MAX_THREADS)) {
max = info.maxThreads;
}
if (port != -1 || min !=-1 || max != -1) {
stsvc.updateService(port, min, max);
} else {
status = Status.ERROR;
errMsg = rb.getString( rb.X_NO_SERVICE_PROPS_SET,
info.name);
}
} catch (Exception ex) {
logger.log(Logger.WARNING, rb.W_ERROR_UPDATING_SERVICE,
svc.getName(), ex);
status = Status.ERROR;
errMsg = getMessageFromException(ex);
}
}
}