MKCommModel
|
00001 #ifndef MKREQUEST_H 00002 #define MKREQUEST_H 00003 00004 #define MKREQUEST_CACHE_SIZE 256 00005 #define MKREQUEST_TIMEOUT 750000 00006 00007 #include <sys/time.h> 00008 00009 #include "include/bson/bson.h" 00010 00011 #include "MKNode.h" 00012 00013 class MKRequest { 00014 public: 00015 00016 friend class MKCommModelTests; 00017 00018 enum { kLatency, kTraceRoute }; 00019 00020 MKNode *from, *to; 00021 00022 ~MKRequest(); 00023 00024 int id() { return requestID; } 00025 void send(); 00026 int type() { return requestType; } 00027 00028 00032 static MKRequest *latency(MKNode *from, MKNode *to); 00033 static MKRequest *route(MKNode *from, MKNode *to); 00034 static MKRequest *cache(int id); 00035 static void reset(); 00036 00037 00038 private: 00039 00040 int requestID; 00041 mongo::BSONObj *bData; 00042 int requestType; 00043 timeval time; 00044 bool sent; 00045 00046 static unsigned char lastID; 00047 static MKRequest *reqCache[MKREQUEST_CACHE_SIZE]; 00048 static MKRequest *lastLatency, *lastTraceRoute; 00049 00050 MKRequest(int reqType, mongo::BSONObj *data, MKNode *from, MKNode *to); 00051 00052 }; 00053 00054 #endif