diff options
7 files changed, 73 insertions, 18 deletions
diff --git a/java/management/client/src/main/java/org/apache/qpid/management/Protocol.java b/java/management/client/src/main/java/org/apache/qpid/management/Protocol.java index a37332f1f0..5b41785b11 100644 --- a/java/management/client/src/main/java/org/apache/qpid/management/Protocol.java +++ b/java/management/client/src/main/java/org/apache/qpid/management/Protocol.java @@ -40,6 +40,8 @@ public interface Protocol char EVENT_CONTENT_RESPONSE_OPCDE = 'e'; char INSTR_AND_CONFIG_CONTENT_RESPONSE_OPCODE = 'g'; + char HEARTBEAT_INDICATION_RESPONSE_OPCODE = 'h'; + int CLASS = 1; int EVENT = 2; } diff --git a/java/management/client/src/main/java/org/apache/qpid/management/configuration/Configurator.java b/java/management/client/src/main/java/org/apache/qpid/management/configuration/Configurator.java index defedf0a8d..6952d0ca4c 100644 --- a/java/management/client/src/main/java/org/apache/qpid/management/configuration/Configurator.java +++ b/java/management/client/src/main/java/org/apache/qpid/management/configuration/Configurator.java @@ -30,6 +30,7 @@ import org.apache.qpid.management.Names; import org.apache.qpid.management.Protocol; import org.apache.qpid.management.domain.handler.impl.ConfigurationMessageHandler; import org.apache.qpid.management.domain.handler.impl.EventContentMessageHandler; +import org.apache.qpid.management.domain.handler.impl.HeartBeatIndicationMessageHandler; import org.apache.qpid.management.domain.handler.impl.InstrumentationMessageHandler; import org.apache.qpid.management.domain.handler.impl.MethodResponseMessageHandler; import org.apache.qpid.management.domain.handler.impl.SchemaResponseMessageHandler; @@ -144,7 +145,12 @@ public class Configurator extends DefaultHandler Configuration.getInstance().addMethodReplyMessageHandlerMapping( new MessageHandlerMapping( Protocol.SCHEMA_RESPONSE_OPCODE, - SchemaResponseMessageHandler.class.getName())); + SchemaResponseMessageHandler.class.getName())); + + Configuration.getInstance().addMethodReplyMessageHandlerMapping( + new MessageHandlerMapping( + Protocol.HEARTBEAT_INDICATION_RESPONSE_OPCODE, + HeartBeatIndicationMessageHandler.class.getName())); } /** diff --git a/java/management/client/src/main/java/org/apache/qpid/management/domain/handler/impl/HeartBeatIndicationMessageHandler.java b/java/management/client/src/main/java/org/apache/qpid/management/domain/handler/impl/HeartBeatIndicationMessageHandler.java new file mode 100644 index 0000000000..7bc5c71a39 --- /dev/null +++ b/java/management/client/src/main/java/org/apache/qpid/management/domain/handler/impl/HeartBeatIndicationMessageHandler.java @@ -0,0 +1,19 @@ +package org.apache.qpid.management.domain.handler.impl;
+
+import org.apache.qpid.management.domain.handler.base.BaseMessageHandler;
+import org.apache.qpid.transport.codec.ManagementDecoder;
+
+/**
+ * This is the handler responsible for processing the heartbeat indication response messages.
+ * At the moment it simply updates the last refresh update timestamp of the domain model.
+ *
+ * @author Andrea Gazzarini.
+ */
+public class HeartBeatIndicationMessageHandler extends BaseMessageHandler
+{
+ @Override
+ public void process(ManagementDecoder decoder, int sequenceNumber)
+ {
+ _domainModel.updateLastRefreshDate();
+ }
+}
diff --git a/java/management/client/src/main/java/org/apache/qpid/management/domain/model/DomainModel.java b/java/management/client/src/main/java/org/apache/qpid/management/domain/model/DomainModel.java index 6bd9d22014..5a0ebaf1f7 100644 --- a/java/management/client/src/main/java/org/apache/qpid/management/domain/model/DomainModel.java +++ b/java/management/client/src/main/java/org/apache/qpid/management/domain/model/DomainModel.java @@ -20,6 +20,7 @@ */ package org.apache.qpid.management.domain.model; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -42,6 +43,8 @@ public class DomainModel /** Here the known packages of the remote broker are stored. */ Map<String,QpidPackage> _packages = new HashMap<String, QpidPackage>(); + private Date _lastRefreshDate = new Date(); + private IMethodInvocationListener _methodInvocationListener; /** @@ -88,6 +91,24 @@ public class DomainModel } /** + * Updates the last refresh date. + */ + public void updateLastRefreshDate() + { + this._lastRefreshDate = new Date(); + } + + /** + * Returns the last refresh date. + * + * @return the last refresh date. + */ + public Date getLastRefreshDate() + { + return _lastRefreshDate; + } + + /** * Adds the specified schema to this domain model. * * @param packageName the package name. diff --git a/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Uint32.java b/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Uint32.java index fa62e32d5e..dc49695934 100644 --- a/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Uint32.java +++ b/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Uint32.java @@ -39,6 +39,6 @@ public class Uint32 extends Type @Override public void encode (Object value, AmqpCoDec encoder) { - encoder.pack32((Integer)value); + encoder.pack32(((Number)value).intValue()); } -}
\ No newline at end of file +} diff --git a/java/management/client/src/main/java/org/apache/qpid/management/domain/services/QMan.java b/java/management/client/src/main/java/org/apache/qpid/management/domain/services/QMan.java index b6264a73de..81434c14fb 100644 --- a/java/management/client/src/main/java/org/apache/qpid/management/domain/services/QMan.java +++ b/java/management/client/src/main/java/org/apache/qpid/management/domain/services/QMan.java @@ -55,8 +55,6 @@ public class QMan LOGGER.info(Messages.QMAN_000001_STARTING_QMAN); LOGGER.info(Messages.QMAN_000002_READING_CONFIGURATION); - addShutDownHook(); - Configurator configurator = new Configurator(); try { @@ -95,22 +93,30 @@ public class QMan @Override public void run () { - LOGGER.info(Messages.QMAN_000020_SHUTTING_DOWN_QMAN); - try - { - for (ManagementClient client : managementClients) - { - client.shutdown(); - } - } catch(Exception exception) - { - } - LOGGER.info(Messages.QMAN_000021_SHUT_DOWN); + QMan.this.stop(); } }); } /** + * Stop Qman + */ + public void stop() + { + LOGGER.info(Messages.QMAN_000020_SHUTTING_DOWN_QMAN); + try + { + for (ManagementClient client : managementClients) + { + client.shutdown(); + } + } catch(Exception exception) + { + } + LOGGER.info(Messages.QMAN_000021_SHUT_DOWN); + } + + /** * Main method used for starting Q-Man. * * @param args the command line arguments. @@ -124,6 +130,7 @@ public class QMan } QMan qman = new QMan(); + qman.addShutDownHook(); try { qman.start(); diff --git a/java/management/client/src/main/java/org/apache/qpid/management/servlet/QManServlet.java b/java/management/client/src/main/java/org/apache/qpid/management/servlet/QManServlet.java index 8c69545f07..f0d663701b 100644 --- a/java/management/client/src/main/java/org/apache/qpid/management/servlet/QManServlet.java +++ b/java/management/client/src/main/java/org/apache/qpid/management/servlet/QManServlet.java @@ -61,6 +61,6 @@ public class QManServlet extends HttpServlet { @Override
public void destroy()
{
- // qman.stop();
+ qman.stop();
}
-}
\ No newline at end of file +}
|
