Distributed Cache
membership_list.h
Go to the documentation of this file.
1 #pragma once
2 #include <iostream>
3 #include <map>
4 #include <string>
5 
6 #include "buffer.h"
7 #include "gossip_artifact.h"
8 #include "requests.h"
9 
10 #define T_FAIL 80
11 #define T_REMOVE 160
12 #define RING_SIZE 1021
13 
15  char ip[20];
16  int port;
17  long heartbeat;
19 };
20 
21 struct Member {
23  long heartbeat;
24  long timestamp;
26  Member(std::string ip, int port, int startRange = -1, long heartbeat = 0)
27  : Member(Address(ip, port), startRange, heartbeat) {}
28  Member(Address address, int startRange = -1, long heartbeat = 0,
29  long timestamp = 0)
30  : address(address),
35  : Member(Address(data.ip, data.port), data.startRange, data.heartbeat) {
36  }
37  void update(const Member& other, long timestamp);
38 
39  Buffer serialize() const;
40 };
41 
43  std::map<Address, int> memberMap;
44  std::vector<Member> memberList;
45 
46  long timestamp;
47 
48  public:
49  std::map<int, Address> consistentRing;
51  int getTimestamp();
52  void updateTimestamp(long timestamp);
53  Member& getMember(Address address);
54  std::string getType() const;
55  Buffer getPayload() const;
56 
57  void update(Buffer data);
58  void loop(long timestamp);
59 
60  void removeDead();
61 
62  bool hasMember(Address address);
63  void addMember(Member member);
64 
65  size_t size() const;
66 
67  Member& operator[](int i);
68 
69  void deleteMember(Address& address);
70 
71  void deleteMember(Member& member);
72 
73  Address getNearestNode(int key);
74 };
MembershipList::getMember
Member & getMember(Address address)
Definition: membership_list.cpp:27
Member::serialize
Buffer serialize() const
Definition: membership_list.cpp:11
Member::address
Address address
Definition: membership_list.h:22
RING_SIZE
#define RING_SIZE
Definition: membership_list.h:12
MembershipList
Definition: membership_list.h:42
Member::timestamp
long timestamp
Definition: membership_list.h:24
requests.h
Address::port
int port
Definition: requests.h:50
MemberSerialized::ip
char ip[20]
Definition: membership_list.h:15
MemberSerialized::startRange
int startRange
Definition: membership_list.h:18
gossip_artifact.h
GossipArtifact
Definition: gossip_artifact.h:6
Buffer::addBuffer
void addBuffer(Buffer &other)
Definition: buffer.h:13
Buffer
Definition: buffer.h:5
MemberSerialized::port
int port
Definition: membership_list.h:16
Member::Member
Member(MemberSerialized data)
Definition: membership_list.h:34
MembershipList::consistentRing
std::map< int, Address > consistentRing
Definition: membership_list.h:49
MembershipList::memberList
std::vector< Member > memberList
Definition: membership_list.h:44
MembershipList::loop
void loop(long timestamp)
Definition: membership_list.cpp:58
MembershipList::getTimestamp
int getTimestamp()
Definition: membership_list.cpp:23
Address::ip
std::string ip
Definition: requests.h:49
Member::Member
Member(Address address, int startRange=-1, long heartbeat=0, long timestamp=0)
Definition: membership_list.h:28
Buffer::data
char * data()
Definition: buffer.h:22
MembershipList::hasMember
bool hasMember(Address address)
Definition: membership_list.cpp:74
Address::toString
std::string toString() const
Definition: requests.h:60
MembershipList::getType
std::string getType() const
Definition: membership_list.cpp:31
Member::update
void update(const Member &other, long timestamp)
Definition: membership_list.cpp:3
Address
Definition: requests.h:48
MembershipList::operator[]
Member & operator[](int i)
Definition: membership_list.cpp:102
MembershipList::update
void update(Buffer data)
Definition: membership_list.cpp:46
MemberSerialized
Definition: membership_list.h:14
PayloadHeader
Definition: requests.h:142
MembershipList::removeDead
void removeDead()
Definition: membership_list.cpp:63
MembershipList::getNearestNode
Address getNearestNode(int key)
Definition: membership_list.cpp:123
MembershipList::getPayload
Buffer getPayload() const
Definition: membership_list.cpp:32
MembershipList::memberMap
std::map< Address, int > memberMap
Definition: membership_list.h:43
buffer.h
Member
Definition: membership_list.h:21
MembershipList::size
size_t size() const
Definition: membership_list.cpp:100
Member::startRange
int startRange
Definition: membership_list.h:25
MembershipList::addMember
void addMember(Member member)
Definition: membership_list.cpp:77
T_REMOVE
#define T_REMOVE
Definition: membership_list.h:11
PayloadHeader::type
char type[20]
Definition: requests.h:143
MemberSerialized::heartbeat
long heartbeat
Definition: membership_list.h:17
MembershipList::MembershipList
MembershipList()
Definition: membership_list.cpp:22
MembershipList::timestamp
long timestamp
Definition: membership_list.h:46
membership_list.h
MembershipList::deleteMember
void deleteMember(Address &address)
Definition: membership_list.cpp:104
PayloadHeader::size
int size
Definition: requests.h:144
Member::Member
Member(std::string ip, int port, int startRange=-1, long heartbeat=0)
Definition: membership_list.h:26
MembershipList::updateTimestamp
void updateTimestamp(long timestamp)
Definition: membership_list.cpp:24
T_FAIL
#define T_FAIL
Definition: membership_list.h:10
Buffer::size
int size() const
Definition: buffer.h:12
Member::heartbeat
long heartbeat
Definition: membership_list.h:23