Distributed Cache
member_node.h
Go to the documentation of this file.
1 #pragma once
2 #include <string.h>
3 
4 #include <iostream>
5 #include <map>
6 #include <string>
7 #include <unordered_map>
8 #include <thread>
9 
10 #include "buffer.h"
11 #include "gossip_artifact.h"
12 #include "membership_list.h"
13 #include "requests.h"
14 
15 #define HEARTBEAT_PERIOD 100
16 #define GOSSIP_K 2
17 
18 class MemberNode {
21  std::thread tid;
22 
23  std::unordered_map<std::string, GossipArtifact*> gossipArtifacts;
24  std::mutex lock;
25 
26  public:
28 
29  void addIntroducer(std::string ip, int port);
30 
31  MemberNode(Address myAddress, int startRange = -1);
32 
33  void registerArtifact(GossipArtifact& artifact);
34 
36 
37  int heartbeat();
38 
39  void loop();
40 
41  int sendMemberList(Member& member, Buffer &data);
42 
43  void receiveGossip(int connection);
44 
45  std::vector<int> selectKItems(int n, int k);
46 
47  Address getNearestNode(int key);
49  void threadLoop();
50 };
loop_read
static ssize_t loop_read(int fd, void *data, size_t size)
Definition: requests.h:105
GossipPayload
Definition: requests.h:138
Member::address
Address address
Definition: membership_list.h:22
member_node.h
LRUCachePolicy
Definition: LRU_cache_policy.h:7
MembershipList
Definition: membership_list.h:42
Member::timestamp
long timestamp
Definition: membership_list.h:24
LRUCachePolicy::getSize
int getSize()
Definition: LRU_cache_policy.h:20
MemberNode::getNearestNode
Address getNearestNode(int key)
Definition: member_node.cpp:127
requests.h
MemberNode::registerArtifact
void registerArtifact(GossipArtifact &artifact)
Definition: member_node.cpp:27
gossip_artifact.h
GossipArtifact::getType
virtual std::string getType() const =0
GossipArtifact
Definition: gossip_artifact.h:6
MemberNode
Definition: member_node.h:18
Buffer::addBuffer
void addBuffer(Buffer &other)
Definition: buffer.h:13
Address::getConnection
static int getConnection(Address addr)
Definition: requests.h:62
MemberNode::generateGossipPayload
Buffer generateGossipPayload()
Definition: member_node.cpp:31
Buffer
Definition: buffer.h:5
MemberNode::threadLoop
void threadLoop()
Definition: member_node.cpp:144
MemberNode::loop
void loop()
Definition: member_node.cpp:54
MemberNode::gossipArtifacts
std::unordered_map< std::string, GossipArtifact * > gossipArtifacts
Definition: member_node.h:23
HEARTBEAT_PERIOD
#define HEARTBEAT_PERIOD
Definition: member_node.h:15
RequestType
RequestType
Definition: requests.h:37
LRUCachePolicy::getEntry
int getEntry(std::string container, int key)
Definition: LRU_cache_policy.cpp:9
MemberNode::lock
std::mutex lock
Definition: member_node.h:24
Buffer::data
char * data()
Definition: buffer.h:22
MemberNode::memberList
MembershipList memberList
Definition: member_node.h:20
Address::toString
std::string toString() const
Definition: requests.h:60
MemberNode::selectKItems
std::vector< int > selectKItems(int n, int k)
Definition: member_node.cpp:132
TIMECHECK
#define TIMECHECK(x, message, limit)
Definition: member_node.cpp:5
Address
Definition: requests.h:48
loop_write
static ssize_t loop_write(int fd, const void *data, size_t size)
Definition: requests.h:82
RequestType::GOSSIP
@ GOSSIP
GOSSIP_K
#define GOSSIP_K
Definition: member_node.h:16
LRUCachePolicy::erase
void erase(std::string container, int key)
Definition: LRU_cache_policy.cpp:21
PayloadHeader
Definition: requests.h:142
MembershipList::getNearestNode
Address getNearestNode(int key)
Definition: membership_list.cpp:123
buffer.h
MemberNode::receiveGossip
void receiveGossip(int connection)
Definition: member_node.cpp:105
Member
Definition: membership_list.h:21
LRUCachePolicy::insert
void insert(std::string container, int key, int value)
Definition: LRU_cache_policy.cpp:30
LRUCachePolicy::allocateSize
void allocateSize(int size)
Definition: LRU_cache_policy.cpp:3
MemberNode::MemberNode
MemberNode(Address myAddress, int startRange=-1)
Definition: member_node.cpp:45
MemberNode::heartbeat
int heartbeat()
Definition: member_node.cpp:52
MembershipList::size
size_t size() const
Definition: membership_list.cpp:100
MemberNode::getAddress
Address getAddress()
Definition: member_node.h:48
LRU_cache_policy.h
MemberNode::getList
MembershipList getList()
Definition: member_node.cpp:17
MemberNode::sendMemberList
int sendMemberList(Member &member, Buffer &data)
Definition: member_node.cpp:79
MembershipList::addMember
void addMember(Member member)
Definition: membership_list.cpp:77
MemberNode::addIntroducer
void addIntroducer(std::string ip, int port)
Definition: member_node.cpp:23
PayloadHeader::type
char type[20]
Definition: requests.h:143
LRUCachePolicy::hasEntry
bool hasEntry(std::string container, int key)
Definition: LRU_cache_policy.cpp:5
membership_list.h
PayloadHeader::size
int size
Definition: requests.h:144
TEST_CASE
TEST_CASE("LRU Tests")
Definition: LRU_cache_policy_test.cpp:7
MemberNode::myMember
Member myMember
Definition: member_node.h:19
LRUCachePolicy::reset
void reset()
Definition: LRU_cache_policy.cpp:47
MemberNode::tid
std::thread tid
Definition: member_node.h:21
GossipPayload::gossipArtifactCount
int gossipArtifactCount
Definition: requests.h:139
Buffer::size
int size() const
Definition: buffer.h:12
Member::heartbeat
long heartbeat
Definition: membership_list.h:23