1*5a1d355fSStephan Aßmus // ServerNodeID.h 2*5a1d355fSStephan Aßmus 3*5a1d355fSStephan Aßmus #ifndef NET_FS_SERVER_NODE_ID_H 4*5a1d355fSStephan Aßmus #define NET_FS_SERVER_NODE_ID_H 5*5a1d355fSStephan Aßmus 6*5a1d355fSStephan Aßmus #include <SupportDefs.h> 7*5a1d355fSStephan Aßmus 8*5a1d355fSStephan Aßmus #include "Request.h" 9*5a1d355fSStephan Aßmus 10*5a1d355fSStephan Aßmus // NodeID 11*5a1d355fSStephan Aßmus struct NodeID { NodeIDNodeID12*5a1d355fSStephan Aßmus NodeID() 13*5a1d355fSStephan Aßmus : volumeID(-1), 14*5a1d355fSStephan Aßmus nodeID(-1) 15*5a1d355fSStephan Aßmus { 16*5a1d355fSStephan Aßmus } 17*5a1d355fSStephan Aßmus NodeIDNodeID18*5a1d355fSStephan Aßmus NodeID(dev_t volumeID, ino_t nodeID) 19*5a1d355fSStephan Aßmus : volumeID(volumeID), 20*5a1d355fSStephan Aßmus nodeID(nodeID) 21*5a1d355fSStephan Aßmus { 22*5a1d355fSStephan Aßmus } 23*5a1d355fSStephan Aßmus NodeIDNodeID24*5a1d355fSStephan Aßmus NodeID(const NodeID& other) 25*5a1d355fSStephan Aßmus : volumeID(other.volumeID), 26*5a1d355fSStephan Aßmus nodeID(other.nodeID) 27*5a1d355fSStephan Aßmus { 28*5a1d355fSStephan Aßmus } 29*5a1d355fSStephan Aßmus GetHashCodeNodeID30*5a1d355fSStephan Aßmus uint32 GetHashCode() const 31*5a1d355fSStephan Aßmus { 32*5a1d355fSStephan Aßmus uint64 v = (uint64)nodeID; 33*5a1d355fSStephan Aßmus return (uint32)(v >> 32) ^ (uint32)v ^ (uint32)volumeID; 34*5a1d355fSStephan Aßmus } 35*5a1d355fSStephan Aßmus 36*5a1d355fSStephan Aßmus NodeID& operator=(const NodeID& other) 37*5a1d355fSStephan Aßmus { 38*5a1d355fSStephan Aßmus volumeID = other.volumeID; 39*5a1d355fSStephan Aßmus nodeID = other.nodeID; 40*5a1d355fSStephan Aßmus return *this; 41*5a1d355fSStephan Aßmus } 42*5a1d355fSStephan Aßmus 43*5a1d355fSStephan Aßmus bool operator==(const NodeID& other) const 44*5a1d355fSStephan Aßmus { 45*5a1d355fSStephan Aßmus return (volumeID == other.volumeID && nodeID == other.nodeID); 46*5a1d355fSStephan Aßmus } 47*5a1d355fSStephan Aßmus 48*5a1d355fSStephan Aßmus bool operator!=(const NodeID& other) const 49*5a1d355fSStephan Aßmus { 50*5a1d355fSStephan Aßmus return !(*this == other); 51*5a1d355fSStephan Aßmus } 52*5a1d355fSStephan Aßmus 53*5a1d355fSStephan Aßmus dev_t volumeID; 54*5a1d355fSStephan Aßmus ino_t nodeID; 55*5a1d355fSStephan Aßmus }; 56*5a1d355fSStephan Aßmus 57*5a1d355fSStephan Aßmus // ServerNodeID 58*5a1d355fSStephan Aßmus struct ServerNodeID : RequestMember, NodeID { 59*5a1d355fSStephan Aßmus ServerNodeID(); 60*5a1d355fSStephan Aßmus ServerNodeID(dev_t volumeID, ino_t nodeID); 61*5a1d355fSStephan Aßmus virtual ~ServerNodeID(); 62*5a1d355fSStephan Aßmus 63*5a1d355fSStephan Aßmus virtual void ShowAround(RequestMemberVisitor* visitor); 64*5a1d355fSStephan Aßmus 65*5a1d355fSStephan Aßmus inline ServerNodeID& operator=(const NodeID& other); 66*5a1d355fSStephan Aßmus }; 67*5a1d355fSStephan Aßmus 68*5a1d355fSStephan Aßmus // = 69*5a1d355fSStephan Aßmus inline 70*5a1d355fSStephan Aßmus ServerNodeID& 71*5a1d355fSStephan Aßmus ServerNodeID::operator=(const NodeID& other) 72*5a1d355fSStephan Aßmus { 73*5a1d355fSStephan Aßmus NodeID::operator=(other); 74*5a1d355fSStephan Aßmus return *this; 75*5a1d355fSStephan Aßmus } 76*5a1d355fSStephan Aßmus 77*5a1d355fSStephan Aßmus #endif // NET_FS_SERVER_NODE_ID_H 78