Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

org.activemq.io.util
Class MemoryBoundedMessageCache  view MemoryBoundedMessageCache download MemoryBoundedMessageCache.java

java.lang.Object
  extended byorg.activemq.io.util.MemoryBoundedMessageCache
All Implemented Interfaces:
MemoryBoundedObject, org.activemq.store.cache.MessageCache

public class MemoryBoundedMessageCache
extends java.lang.Object
implements org.activemq.store.cache.MessageCache, MemoryBoundedObject

A simple cache that stores messages in memory. Cache entries are evicted when the memoryManager starts to run short on memory (A LRU cache is used).

Version:
$Revision: 1.1.1.1 $

Nested Class Summary
private static class MemoryBoundedMessageCache.CacheNode
          Used associate the a Message to it's QueueListEntry in the lruList
 
Field Summary
private  boolean closed
           
private  float growthLimit
           
private  org.activemq.service.impl.DefaultQueueList lruList
          Ordered list of messageIds recently used at the front
private  MemoryBoundedObjectManager memoryManager
           
private  int memoryUsedByThisCache
           
private  java.util.HashMap messages
          msgId -> LRUNode
private static int OBJECT_OVERHEAD
           
 
Constructor Summary
MemoryBoundedMessageCache(MemoryBoundedObjectManager memoryManager)
           
 
Method Summary
 void close()
          Lets a cache know it will not be used any further and that it can release aquired resources
private  void decrementMemoryUsed(org.activemq.message.ActiveMQMessage packet)
           
 org.activemq.message.ActiveMQMessage get(java.lang.String msgid)
          Gets a message that was previously put into this object.
 float getGrowthLimit()
           
private  void incrementMemoryUsed(org.activemq.message.ActiveMQMessage packet)
           
private  boolean isFull()
           
 void put(java.lang.String messageID, org.activemq.message.ActiveMQMessage message)
          Puts a message into the cache.
 void remove(java.lang.String messageID)
          Remvoes a message from the cache.
private  void removeOldest()
           
 void setGrowthLimit(float growTillFence)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

OBJECT_OVERHEAD

private static final int OBJECT_OVERHEAD
See Also:
Constant Field Values

memoryManager

private final MemoryBoundedObjectManager memoryManager

messages

private final java.util.HashMap messages
msgId -> LRUNode


lruList

private final org.activemq.service.impl.DefaultQueueList lruList
Ordered list of messageIds recently used at the front


memoryUsedByThisCache

private int memoryUsedByThisCache

growthLimit

private float growthLimit

closed

private boolean closed
Constructor Detail

MemoryBoundedMessageCache

public MemoryBoundedMessageCache(MemoryBoundedObjectManager memoryManager)
Method Detail

get

public org.activemq.message.ActiveMQMessage get(java.lang.String msgid)
Gets a message that was previously put into this object.

Specified by:
get in interface org.activemq.store.cache.MessageCache

put

public void put(java.lang.String messageID,
                org.activemq.message.ActiveMQMessage message)
Puts a message into the cache.

Specified by:
put in interface org.activemq.store.cache.MessageCache

removeOldest

private void removeOldest()

isFull

private boolean isFull()

remove

public void remove(java.lang.String messageID)
Remvoes a message from the cache.

Specified by:
remove in interface org.activemq.store.cache.MessageCache

incrementMemoryUsed

private void incrementMemoryUsed(org.activemq.message.ActiveMQMessage packet)

decrementMemoryUsed

private void decrementMemoryUsed(org.activemq.message.ActiveMQMessage packet)

getGrowthLimit

public float getGrowthLimit()

setGrowthLimit

public void setGrowthLimit(float growTillFence)

close

public void close()
Description copied from interface: org.activemq.store.cache.MessageCache
Lets a cache know it will not be used any further and that it can release aquired resources

Specified by:
close in interface org.activemq.store.cache.MessageCache