org.wegra.mon.mem
Class MemoryMonitor

java.lang.Object
  extended byorg.wegra.mon.mem.MemoryMonitor
All Implemented Interfaces:
Monitor, Subscriber
Direct Known Subclasses:
LoggableMemoryMonitor, MmClient, MmServer

public abstract class MemoryMonitor
extends java.lang.Object
implements Monitor, Subscriber

Abstract MemoryMonitor class defined essential MemoryMonitor interface.
All overridable methods (except xxxPre/Post()) are implemented as act like the GoF's Decorator Pattern.

Author:
wegra (Bok-Youn Lee)

Field Summary
protected  java.util.HashMap fActiveSubscribers
          Active subscribers
protected  MemoryMonitor fMonitor
          Internal monitor.
protected  java.util.HashMap fWaitingSubscribers
          Waiting subscribers
 
Constructor Summary
protected MemoryMonitor(MemoryMonitor monitor)
          Creates MemoryMonitor instance decorating specified monitor.
 
Method Summary
 java.util.Set getActiveSubscribers()
          Returns active subscribers.
static MemoryMonitor getDefault()
          Returns Singleton instance of default MemoryMonitor..
 MemoryMonitor getHost()
          Returns the host monitor.
 long getMaxMemory()
          Returns max memory.
 long getMonitoringRate()
          Returns monitoring rate.
 long getPeakCharge()
          Returns value of peak charged memory.
 java.util.Set getSubscribers()
          Returns all subscribers.
 java.util.Set getWaitingSubscribers()
          Returns waiting subscribers.
 void hostStopped()
          (Template Method) This method will be invoked by host monitor.
protected  void hostStoppedPost()
          This method will be executed after hostStopped() method.
protected  void hostStoppedPre()
          This method will be executed before hostStopped() method.
 void invokeGc()
          Invokes garbage collector.
 boolean isHost()
          Returns true if the monitor is host, false otherwise.
 void messageDelivered(java.lang.String message)
          (Template Method) This method will be invoked by host monitor.
protected  void messageDeliveredPost(java.lang.String message)
          This method will be executed after messageDelivered() method.
protected  void messageDeliveredPre(java.lang.String message)
          This method will be executed before messageDelivered() method.
 void register(Subscriber subscriber)
          Registers specified subscriber to this monitor's subscriber list.
 void reset()
          Reset monitor.
 void resultReceived(long total, long free)
          (Template Method) This method will be invoked by host monitor.
protected  void resultReceivedPost(long total, long free)
          This method will be executed after resultReceived() method.
protected  void resultReceivedPre(long total, long free)
          This method will be executed before resultReceived() method.
 void resumeSubscribing(Subscriber subscriber)
          Resumes subscribing of specified subscriber.
 void sendMessage(java.lang.String message)
          Sends user message to all registered subscribers.
 void setMonitoringRate(long rate)
          Sets monitoring rate.
 void start()
          Starts monitor.
 void stop()
          Stops monitor.
 void unregister(Subscriber subscriber)
          Unregisters specified subscriber from this monitor's subscriber list.
 void waitSubscribing(Subscriber subscriber)
          Waits subscribing until resumeSubscribing() method is invoked.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

fMonitor

protected MemoryMonitor fMonitor
Internal monitor.


fActiveSubscribers

protected java.util.HashMap fActiveSubscribers
Active subscribers


fWaitingSubscribers

protected java.util.HashMap fWaitingSubscribers
Waiting subscribers

Constructor Detail

MemoryMonitor

protected MemoryMonitor(MemoryMonitor monitor)
Creates MemoryMonitor instance decorating specified monitor.

Parameters:
monitor - Internal monitor.
Method Detail

getDefault

public static MemoryMonitor getDefault()
Returns Singleton instance of default MemoryMonitor..

Returns:
Default monitor which is monitoring a local JVM.

register

public final void register(Subscriber subscriber)
Registers specified subscriber to this monitor's subscriber list.

Parameters:
subscriber - Target subscriber.

unregister

public final void unregister(Subscriber subscriber)
Unregisters specified subscriber from this monitor's subscriber list.

Parameters:
subscriber - Target subscriber.

resumeSubscribing

public final void resumeSubscribing(Subscriber subscriber)
Resumes subscribing of specified subscriber.

Parameters:
subscriber - Target subscriber.

waitSubscribing

public final void waitSubscribing(Subscriber subscriber)
Waits subscribing until resumeSubscribing() method is invoked.

Parameters:
subscriber - Target subscriber.

getSubscribers

public final java.util.Set getSubscribers()
Returns all subscribers.

Returns:
Set which contains all subscribers.

getActiveSubscribers

public final java.util.Set getActiveSubscribers()
Returns active subscribers.

Returns:
Set which contains all active subscribers.

getWaitingSubscribers

public final java.util.Set getWaitingSubscribers()
Returns waiting subscribers.

Returns:
Set which contains waiting subscribers.

resultReceived

public final void resultReceived(long total,
                                 long free)
(Template Method) This method will be invoked by host monitor. If you want to do something when monitoring result received, you can override resultReceivedPre() or resultReceivedPost() method instead of this.

Specified by:
resultReceived in interface Subscriber
Parameters:
total - total allocated memory.
free - free memory.
See Also:
Subscriber.resultReceived(long, long)

resultReceivedPre

protected void resultReceivedPre(long total,
                                 long free)
This method will be executed before resultReceived() method. You can override this method if you have any works to do before propagating each monitoring result.

Parameters:
total - total allocated memory.
free - free memory.

resultReceivedPost

protected void resultReceivedPost(long total,
                                  long free)
This method will be executed after resultReceived() method. You can overrid this method if you have any works to do after propagating each monitoring result.

Parameters:
total - total allocated memory.
free - free memory.

hostStopped

public final void hostStopped()
(Template Method) This method will be invoked by host monitor. If you want to do something when host stopped message received, you can override hostStoppedPre() or hostStoppedPost() method instead of this.

Specified by:
hostStopped in interface Subscriber
See Also:
Subscriber.hostStopped()

hostStoppedPre

protected void hostStoppedPre()
This method will be executed before hostStopped() method. You can override this method if you have any works to do before propagating each host stopped message.


hostStoppedPost

protected void hostStoppedPost()
This method will be executed after hostStopped() method. You can override this method if you have any works to do after propagating each host stopped message.


messageDelivered

public final void messageDelivered(java.lang.String message)
(Template Method) This method will be invoked by host monitor. If you want to do something when message delivered, you can override messageDeliveredPre() or messageDeliveredPost() method instead of this.

Specified by:
messageDelivered in interface Subscriber
Parameters:
message - User message.
See Also:
Subscriber.messageDelivered(String)

messageDeliveredPre

protected void messageDeliveredPre(java.lang.String message)
This method will be executed before messageDelivered() method. You can override this method if you have any works to do before delivering each user message.

Parameters:
message - User message.

messageDeliveredPost

protected void messageDeliveredPost(java.lang.String message)
This method will be executed after messageDelivered() method. You can override this method if you have any works to do after delivering each user message.

Parameters:
message - User message.

getHost

public final MemoryMonitor getHost()
Returns the host monitor.

Returns:
Host monitor.

getPeakCharge

public long getPeakCharge()
Returns value of peak charged memory. Decorates internal MemoryMonitor's getPeakCharge() method.

Returns:
Record of peak charge.

getMaxMemory

public long getMaxMemory()
Returns max memory. Decorates internal MemoryMonitor's getMaxMemory() method.

Returns:
Amount of max memory.

invokeGc

public void invokeGc()
Invokes garbage collector. Decorates internal MemoryMonitor's invokeGc() method.


start

public void start()
Starts monitor. Decorates internal MemoryMonitor's start() method.

Specified by:
start in interface Monitor

stop

public void stop()
Stops monitor. Decorates internal MemoryMonitor's stop() method.

Specified by:
stop in interface Monitor

setMonitoringRate

public void setMonitoringRate(long rate)
Sets monitoring rate. Decorates internal MemoryMonitor's setMonitoringRate() method.

Specified by:
setMonitoringRate in interface Monitor

getMonitoringRate

public long getMonitoringRate()
Returns monitoring rate. Decorates internal MemoryMonitor's getMonitoringRate() method.

Specified by:
getMonitoringRate in interface Monitor

sendMessage

public void sendMessage(java.lang.String message)
Sends user message to all registered subscribers.

Parameters:
message - User message to send.

reset

public void reset()
Reset monitor. Decorates internal MemoryMonitor's reset() method.

Specified by:
reset in interface Monitor

isHost

public boolean isHost()
Returns true if the monitor is host, false otherwise. Default return value is false, so override if you need.

Returns:
True if it's host monitor. Otherwise false.