com.sleepycat.je.tree
Class INArrayRep<ARRAY_BASE_TYPE,REP_ENUM_TYPE,ELEMENT_TYPE>

java.lang.Object
  extended by com.sleepycat.je.tree.INArrayRep<ARRAY_BASE_TYPE,REP_ENUM_TYPE,ELEMENT_TYPE>
Direct Known Subclasses:
INKeyRep, INTargetRep

public abstract class INArrayRep<ARRAY_BASE_TYPE,REP_ENUM_TYPE,ELEMENT_TYPE>
extends Object

The base class for the various array representations used by fields associated with an IN node. Storage efficiency, especially when JE is operating in a "cache full" environment is the prime motivation for the various representations.

Each representation assumes that all read operations are done under a shared latch and all updates (set, copy and compact) are done under an exclusive latch. As a result, the representations themselves do not make any provisions for synchronization.

The callers of all the potentially representation mutating methods:

  1. set(int, Object)
  2. copy(int, int, int)
  3. compact()
must be careful to save the result value and use it for subsequent operations, since it could represent the new mutated object.


Field Summary
protected  IN parent
           
 
Constructor Summary
INArrayRep(IN parent)
           
 
Method Summary
(package private) abstract  long calculateMemorySize()
          Returns the current memory size of the underlying representation in bytes.
abstract  ARRAY_BASE_TYPE compact()
          Chooses a more compact representation, if that's possible, otherwise does nothing.
abstract  ARRAY_BASE_TYPE copy(int from, int to, int n)
          Copies n elements at index denoted by "from" to the index denoted by "to".
abstract  ELEMENT_TYPE get(int idx)
          Returns the element at idx.
abstract  REP_ENUM_TYPE getType()
           
abstract  int length()
          Returns the length, that is, the range within which get and set operations can be performed.
 void noteRepChange(INArrayRep<ARRAY_BASE_TYPE,REP_ENUM_TYPE,ELEMENT_TYPE> newRep)
           
 void noteRepChange(INArrayRep<ARRAY_BASE_TYPE,REP_ENUM_TYPE,ELEMENT_TYPE> newRep, int keyRepDelta)
          Performs the bookkeeping associated with a representation change.
abstract  ARRAY_BASE_TYPE set(int idx, ELEMENT_TYPE e)
          Sets the array element at idx to the node.
(package private)  void updateCacheStats(boolean increment)
          Updates the cache statistics associated with this representation.
(package private) abstract  void updateCacheStats(boolean increment, Evictor evictor)
          Update the cache statistics for this representation.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

parent

protected final IN parent
Constructor Detail

INArrayRep

public INArrayRep(IN parent)
Method Detail

getType

public abstract REP_ENUM_TYPE getType()

set

public abstract ARRAY_BASE_TYPE set(int idx,
                                    ELEMENT_TYPE e)
Sets the array element at idx to the node. The underlying representation can change as a result of the set operation.

Parameters:
idx - the index to be set
e - the array elelement at the idx
Returns:
either this, or the new representation if there was a mutation.

get

public abstract ELEMENT_TYPE get(int idx)
Returns the element at idx.


length

public abstract int length()
Returns the length, that is, the range within which get and set operations can be performed.


copy

public abstract ARRAY_BASE_TYPE copy(int from,
                                     int to,
                                     int n)
Copies n elements at index denoted by "from" to the index denoted by "to". Overlapping copies are supported. It's possible that the representation may mutate as a result of the copy.

Parameters:
from - the source (inclusive) of the copy
to - the target (inclusive) of the copy
n - the number of elements to be copied.
Returns:
either this, or the new representation if there was a mutation.

compact

public abstract ARRAY_BASE_TYPE compact()
Chooses a more compact representation, if that's possible, otherwise does nothing.

Returns:
this or a more compact representation.

calculateMemorySize

abstract long calculateMemorySize()
Returns the current memory size of the underlying representation in bytes. It returns the size of the representation, excluding the size of the elements contained in it.

Returns:
the memory size of the representation in bytes

updateCacheStats

abstract void updateCacheStats(boolean increment,
                               Evictor evictor)
Update the cache statistics for this representation.

Parameters:
increment - true the stat should be incremented, false if it must be decremented
evictor - the evictor that shoulds ths stat counters
See Also:
updateCacheStats(boolean)

updateCacheStats

final void updateCacheStats(boolean increment)
Updates the cache statistics associated with this representation. It should be invoked upon every creation, every rep change and finally when the IN node is decached.

Parameters:
increment - true if the stat is to be incremented, false if it is to be decremented

noteRepChange

public final void noteRepChange(INArrayRep<ARRAY_BASE_TYPE,REP_ENUM_TYPE,ELEMENT_TYPE> newRep,
                                int keyRepDelta)
Performs the bookkeeping associated with a representation change. It accounts for the change in storage and adjusts the cache statistics.

Parameters:
newRep - the new representation that is replacing this one.
keyRepDelta - any further adjustments that must be made. This parameter exists to allow for the fact that the key object overhead is sometimes accounted for by the IN node itself, for example, in the default representation.

noteRepChange

public final void noteRepChange(INArrayRep<ARRAY_BASE_TYPE,REP_ENUM_TYPE,ELEMENT_TYPE> newRep)


Copyright (c) 2004-2010 Oracle. All rights reserved.