Skip to content

JDWX DNSQuery Cache BaseCache

JDW edited this page Jul 17, 2022 · 1 revision

JDWX\DNSQuery\Cache\BaseCache

Contains the caching functionality that is independent of what type of cache is being used, but specific to the project needs, like hashing requests into keys and computing the cache TTL of a response packet.

  • Class name: BaseCache
  • Namespace: \JDWX\DNSQuery\Cache
  • This is an abstract class
  • This class implements: JDWX\DNSQuery\Cache\ICache

Methods

calculateTTL

int JDWX\DNSQuery\Cache\BaseCache::calculateTTL(\JDWX\DNSQuery\Packet\ResponsePacket i_rsp)

Compute the TTL for a response packet.

Uses the lowest TTL of any RR in the response.

The downside to using one TTL for the whole object, is that we'll invalidate entries before they actually expire, causing a real lookup to happen.

The upside is that we don't need to require() each RR type in the cache, so we can look at their individual TTLs on each run. we only unserialize the actual RR object when it's get() from the cache.

  • Visibility: public
  • This method is static.

Arguments

hashRequest

string JDWX\DNSQuery\Cache\ICache::hashRequest(\JDWX\DNSQuery\Packet\RequestPacket i_rsp)

Create cache hash key for a request packet.

Arguments

isTypeCacheable

bool JDWX\DNSQuery\Cache\ICache::isTypeCacheable(string i_type)

Determine if an RR type is cacheable by this implementation.

Arguments

  • i_type string - The RR type string (e.g. "A" or "OPT")

getEx

\JDWX\DNSQuery\Packet\ResponsePacket JDWX\DNSQuery\Cache\ICache::getEx(string i_key)

Same as get() but throws an exception if the key is not found.

Arguments

  • i_key string - Key to look up in the local cache

put

void JDWX\DNSQuery\Cache\ICache::put(string i_key, \JDWX\DNSQuery\Packet\ResponsePacket i_rsp)

Add a new key/response pair to the cache

Arguments

putWithTTL

void JDWX\DNSQuery\Cache\BaseCache::putWithTTL(string i_key, \JDWX\DNSQuery\Packet\ResponsePacket i_rsp, int i_ttl)

Store a response in the cache with a precalculated time-to-live (TTL).

  • Visibility: protected
  • This method is abstract.

Arguments

get

?\JDWX\DNSQuery\Packet\ResponsePacket JDWX\DNSQuery\Cache\ICache::get(string i_key)

Retrieves a cached response packet based on the provided key.

Arguments

  • i_key string - Key to look up in the cache

has

bool JDWX\DNSQuery\Cache\ICache::has(string i_key)

See if the cache has a given key.

Arguments

  • i_key string - Key to look up in the cache
Clone this wiki locally