class <Http/Cache/Inval/Mcast/Perc> HttpPercInvalCache : virtual public HttpMInvalCache

Multicast invalidation + two way liveness messages + invalidation filtering.

Inheritance:


Public Fields

Http/Cache/Inval/Mcast/Perc instvar creq_
Http/Cache/Inval/Mcast/Perc instvar direct_request_
Http/Cache/Inval/Mcast/Perc instvar dreq_
Http/Cache/Inval/Mcast/Perc instvar marks_
Http/Cache/Inval/Mcast/Perc instvar node_
Http/Cache/Inval/Mcast/Perc instvar ns_
Http/Cache/Inval/Mcast/Perc instvar parent_
Http/Cache/Inval/Mcast/Perc instvar pending_
Http/Cache/Inval/Mcast/Perc instvar stat_

Public Methods

Http/Cache/Inval/Mcast/Perc instproc cache-miss { cl type pageid }
Http/Cache/Inval/Mcast/Perc instproc check-sstate {sid cid}
int command(int argc, const char*const* argv)
Http/Cache/Inval/Mcast/Perc instproc get-response-GET { server pageid args }
Http/Cache/Inval/Mcast/Perc instproc get-response-IMS { server pageid args }
Http/Cache/Inval/Mcast/Perc instproc get-response-REF { server pageid args }
HttpPercInvalCache()
Http/Cache/Inval/Mcast/Perc instproc mark-valid-hdr {}
Http/Cache/Inval/Mcast/Perc instproc recv-proforma { cache pageid args }
Http/Cache/Inval/Mcast/Perc instproc refetch { cl type pageid }
Http/Cache/Inval/Mcast/Perc instproc register-server {cid sid}
Http/Cache/Inval/Mcast/Perc instproc send-proforma { pageid args }

Protected Fields

int direct_request_
Flag: if we allow direct request, and hence pro formas

Protected Methods

virtual int recv_inv_filter(ClientPage *pg, InvalidationRec *ir)

Inherited from HttpMInvalCache:

Public Fields

Http/Cache/Inval/Mcast instvar hb_interval_
Http/Cache/Inval/Mcast instvar id_
Http/Cache/Inval/Mcast instvar invalListener_
Http/Cache/Inval/Mcast instvar invalSender_
Http/Cache/Inval/Mcast instvar invListenGroup_
Http/Cache/Inval/Mcast instvar invSndGroup_
Http/Cache/Inval/Mcast instvar mpush_refresh_
Http/Cache/Inval/Mcast instvar tlcAgent_
Http/Cache/Inval/Mcast instvar tlcGroup_
Http/Cache/Inval/Mcast instvar TRANSPORT_
Http/Cache/Inval/Mcast instvar updListener_
Http/Cache/Inval/Mcast instvar updListenGroup_
Http/Cache/Inval/Mcast instvar updSender_
Http/Cache/Inval/Mcast instvar updSendGroup_

Public Methods

void add_inv(const char *name, double mtime)
Http/Cache/Inval/Mcast instproc cancel-mpush-refresh { page }
Http/Cache/Inval/Mcast instproc get-req-notify { pageid }
Http/Cache/Inval/Mcast instproc get-request { cl type pageid args }
Http/Cache/Inval/Mcast instproc get-response-TLC { server pageid tlc }
void handle_node_failure(int cid)
Http/Cache/Inval/Mcast instproc init args
Http/Cache/Inval/Mcast instproc init-inval-group { group }
Http/Cache/Inval/Mcast instproc init-update-group { group }
Http/Cache/Inval/Mcast instproc invalidate { pageid modtime }
void invalidate_server(int sid)
Http/Cache/Inval/Mcast instproc join-inval-group { group }
Http/Cache/Inval/Mcast instproc join-tlc-group { group }
Http/Cache/Inval/Mcast instproc join-update-group { group }
Http/Cache/Inval/Mcast instproc leave-update-group {}
Http/Cache/Inval/Mcast instproc parent-cache { server }
virtual void process_data(int size, AppData* data)
Http/Cache/Inval/Mcast instproc push-update { pageid args }
Http/Cache/Inval/Mcast instproc refresh-mpush { page }
Http/Cache/Inval/Mcast instproc request-mpush { page }
Http/Cache/Inval/Mcast instproc send-refresh-mpush { cache page }
Http/Cache/Inval/Mcast instproc send-req-notify { pageid }
Http/Cache/Inval/Mcast instproc server-join { server cache }
Http/Cache/Inval/Mcast instproc set-parent { parent }
Http/Cache/Inval/Mcast instproc setup-unicast-hb {}
Http/Cache/Inval/Mcast instproc stop-mpush { page }
virtual void timeout(int reason)

Protected Classes

struct SState
SState(NeighborCache* c)
int is_down()
void down()
void up()
NeighborCache* cache()
int down_
If the server is disconnected
NeighborCache* cache_
NextCache

Protected Fields

int Ca_
static HttpMInvalCache** CacheRepository_
int enable_upd_
double hb_interval_
HBTimer hb_timer_
HttpUInvalAgent* inv_parent_
HttpInvalAgent** inv_sender_
InvalidationRec* invlist_
Tcl_HashTable nbr_
int num_inv_
int num_sender_
int num_updater_
static int NumCache_
int push_high_bound_
int size_sender_
int size_updater_
Tcl_HashTable sstate_
HttpInvalAgent** upd_sender_

Protected Methods

static void add_cache(HttpMInvalCache* c)
void add_nbr(HttpMInvalCache* c)
void add_sstate(int sid, SState* sst)
void add_update(const char *name, double mtime)
void check_sstate(int sid, int cid)
InvalidationRec* get_invrec(const char *name)
NeighborCache* lookup_nbr(int id)
SState* lookup_sstate(int sid)
static HttpMInvalCache* map_cache(int id)
HttpHbData* pack_heartbeat()
HttpUpdateData* pack_upd(ClientPage *pg)
virtual void process_inv(int n, InvalidationRec *ivlist, int cache)
void recv_heartbeat(int id)
int recv_inv(HttpHbData *d)
void recv_leave(HttpLeaveData *d)
int recv_upd(HttpUpdateData *d)
virtual void send_hb_helper(int size, AppData *data)
void send_heartbeat()
void send_leave(HttpLeaveData *d)
void send_upd(ClientPage *pg)
virtual void send_upd_helper(int pgsize, AppData* data)

Protected

struct SState
SState(NeighborCache* c)
int is_down()
void down()
void up()
NeighborCache* cache()
int down_
If the server is disconnected
NeighborCache* cache_
NextCache

Inherited from HttpInvalCache:

Public Methods

Http/Cache/Inval instproc answer-request-REF { cl pageid args }
Http/Cache/Inval instproc is-consistent { cl type pageid }
Http/Cache/Inval instproc mark-invalid {}
Http/Cache/Inval instproc mark-leave {}
Http/Cache/Inval instproc mark-rejoin {}
Http/Cache/Inval instproc mark-valid {}
Http/Cache/Inval instproc refetch-pending { cl type pageid }

Inherited from HttpCache:

Public Fields

Http/Cache instvar clist_
Http/Cache instvar fid_
Http/Cache instvar slist_

Public Methods

Http/Cache instproc alloc-connection { client fid }
Http/Cache instproc answer-pending-requests { pageid args }
Http/Cache instproc answer-request-GET { cl pageid args }
Http/Cache instproc cache-hit { cl type pageid }
Http/Cache instproc connect { server }
Http/Cache instproc disconnect { http }
Http/Cache instproc disconnect-client { client }
Http/Cache instproc disconnect-server { server }
Http/Cache instproc send-request { server type pageid size args }

Inherited from HttpApp:

Public Fields

Http instvar pool_

Public Methods

Http instproc addr {}
Http instproc create-pagepool {}
Http instproc get-cachesize {}
Http instproc get-hbsize {}
Http instproc get-imssize {}
Http instproc get-invsize {}
Http instproc get-joinsize {}
Http instproc get-mpusize {}
Http instproc get-ntfsize {}
Http instproc get-pfsize {}
Http instproc get-refsize {}
Http instproc get-reqsize {}
virtual AppData* get_data(int&, AppData*)
Http instproc getfid {}
int id()
void log(const char *fmt, ...)
Http instproc set-cachesize { size }
Http instproc stat { name }

Protected Fields

Tcl_Channel log_
ClientPagePool* pool_
Tcl_HashTable* tpa_

Protected Methods

int add_cnc(HttpApp *client, TcpApp *agt)
void delete_cnc(HttpApp *client)
TcpApp* lookup_cnc(HttpApp *client)
void set_pagepool(ClientPagePool* pp)

Inherited from Process:

Public Methods

virtual void send_data(int size, AppData* data = 0)
inline Process*& target()

Protected Fields

Process* target_

Documentation

Multicast invalidation + two way liveness messages + invalidation filtering.
HttpPercInvalCache()

int command(int argc, const char*const* argv)

virtual int recv_inv_filter(ClientPage *pg, InvalidationRec *ir)

int direct_request_
Flag: if we allow direct request, and hence pro formas

Http/Cache/Inval/Mcast/Perc instproc check-sstate {sid cid}
XXX Do not check-sstate{} when getting a response. Because we are doing direct request, those responses will always come from the server

Http/Cache/Inval/Mcast/Perc instvar direct_request_

Http/Cache/Inval/Mcast/Perc instproc register-server {cid sid}
Because we are doing direct request, we'll get a lot of responses directly from the server, and we'll have cid == sid. We don't want to register this into our server map, because the server map is used for forwarding pro formas. Therefore, we wrap up register-server to direct requests to all our *UNKNOWN* servers to our parent.

Note this won't disrupt server entries via JOIN, because they are established before any request is sent.

Http/Cache/Inval/Mcast/Perc instvar parent_

Http/Cache/Inval/Mcast/Perc instproc cache-miss { cl type pageid }
Allows direct request

Http/Cache/Inval/Mcast/Perc instvar pending_

Http/Cache/Inval/Mcast/Perc instvar creq_

Http/Cache/Inval/Mcast/Perc instvar dreq_

Http/Cache/Inval/Mcast/Perc instproc refetch { cl type pageid }
Allows direct request

Http/Cache/Inval/Mcast/Perc instvar node_

Http/Cache/Inval/Mcast/Perc instvar marks_

Http/Cache/Inval/Mcast/Perc instvar ns_

Http/Cache/Inval/Mcast/Perc instproc get-response-GET { server pageid args }
Whenever get a request, send a pro forma up

Http/Cache/Inval/Mcast/Perc instproc get-response-REF { server pageid args }
Same treatment as get-response-GET

Http/Cache/Inval/Mcast/Perc instproc send-proforma { pageid args }
XXX We need special handling for multiple hierarchies. If we cannot find the server in our server map, we directly call the server's routine to find out its TLC. This doesn't make the simulation artificial, though, because in our previous direct response from the server, we could have easily gotten its TLC.

Http/Cache/Inval/Mcast/Perc instproc get-response-IMS { server pageid args }

Http/Cache/Inval/Mcast/Perc instproc mark-valid-hdr {}

Http/Cache/Inval/Mcast/Perc instproc recv-proforma { cache pageid args }

Http/Cache/Inval/Mcast/Perc instvar stat_


This class has no child classes.

alphabetic index hierarchy of classes


this page has been generated automatically by doc++

Adapted for the NS documentation page

(c)opyright by Malte Zöckler, Roland Wunderling
contact: doc++@zib.de