Commit f518d94c authored by Bhavesh Yadav's avatar Bhavesh Yadav

Added chordinit function

parent 61c7b24c
...@@ -98,7 +98,63 @@ void sendUDPToNode(char* msg,Node node, bool recvResponse, char* buffer) { ...@@ -98,7 +98,63 @@ void sendUDPToNode(char* msg,Node node, bool recvResponse, char* buffer) {
close(sockfd); close(sockfd);
} }
int compareTwoNodes(const void *a, const void *b)
{
int first = ((Node *)a)->nodeId;
int second = ((Node *)b)->nodeId;
return first > second;
}
void sortNodes(Node a[], int n)
{
qsort(a,n,sizeof(Node), compareTwoNodes);
}
void setSuccessor(Node allNodes[],int size) {
int i = 0;
for(i = 0; i<size; i++) {
if(chord.node.nodeId==allNodes[i].nodeId)
break;
}
if(i==0){
chord.predecessor = allNodes[size-1];
}else{
chord.predecessor = allNodes[i-1];
}
if(i == size -1) {
chord.successor = allNodes[0];
}else {
chord.successor = allNodes[i+1];
}
}
void initChordServer(sockaddr_t serverAddr) {
FILE *configFile = fopen("chordConfig","a");
chord.node.socketAddr = serverAddr;
chord.node.nodeId = nodeToId(&chord.node.socketAddr);
int id = nodeToId(&serverAddr);
fclose(configFile);
char ip[16];
int port;
configFile = fopen("chordConfig","r");
Node currNodes[100];
int i = 0;
while(fscanf(configFile,"%s %d %d\n",ip,&port,&id)!=EOF){
createNodeStruct(&currNodes[i],ip,port,id);
i++;
}
sortNodes(currNodes,i);
setSuccessor(currNodes,i);
}
void createNodeStruct(Node *givenNode,char ip[16],int port,int id) {
sockaddr_t sockAddr;
getSocketFromIpAndPort(ip,port,&sockAddr);
givenNode->socketAddr = sockAddr;
givenNode->nodeId = id;
strcpy(givenNode->ip,ip);
givenNode->port = port;
}
void initChordStructure(struct sockaddr_in *joinNode,sockaddr_t socketAddrServer){ void initChordStructure(struct sockaddr_in *joinNode,sockaddr_t socketAddrServer){
chord.node.socketAddr = socketAddrServer; chord.node.socketAddr = socketAddrServer;
......
...@@ -7,6 +7,8 @@ ...@@ -7,6 +7,8 @@
typedef struct Node typedef struct Node
{ {
int nodeId; int nodeId;
char ip[16];
int port;
struct sockaddr_in socketAddr; struct sockaddr_in socketAddr;
}Node; }Node;
...@@ -28,3 +30,5 @@ int keyToId(char * key); ...@@ -28,3 +30,5 @@ int keyToId(char * key);
void initChordStructure(struct sockaddr_in *joinNode, struct sockaddr_in sockAddrServer); void initChordStructure(struct sockaddr_in *joinNode, struct sockaddr_in sockAddrServer);
Node findSuccessor(int id, bool fixFinger); Node findSuccessor(int id, bool fixFinger);
void sendUDPToNode(char* msg,Node node, bool recvResponse, char* buffer); void sendUDPToNode(char* msg,Node node, bool recvResponse, char* buffer);
void initChordServer();
void createNodeStruct(Node *givenNode,char ip[16],int port,int id);
\ No newline at end of file
...@@ -91,7 +91,8 @@ int main(int argc, char* argv[]) ...@@ -91,7 +91,8 @@ int main(int argc, char* argv[])
perror("bind failed"); perror("bind failed");
exit(1); exit(1);
} }
initChordStructure(&joinServer,socketAddr); initChordServer(socketAddr);
// initChordStructure(&joinServer,socketAddr);
printf("Listening on port %d \n", PORT); printf("Listening on port %d \n", PORT);
if (listen(sock_fd, BACKLOG) < 0) { if (listen(sock_fd, BACKLOG) < 0) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment