Skip to content

Commit

Permalink
Change the write. Read giving issues
Browse files Browse the repository at this point in the history
  • Loading branch information
Joao-Maria-Janeiro committed Apr 4, 2020
1 parent c4a92f5 commit 9e23af2
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 28 deletions.
Binary file modified main
Binary file not shown.
56 changes: 28 additions & 28 deletions server.c
Original file line number Diff line number Diff line change
Expand Up @@ -142,10 +142,8 @@ void createServer(Server* server, int _onGoingOperation) {
ongoingOperation = 1;
startKeySearch(server, searchKey, 0, NULL, 0, 0, &ongoingOperation);
} else if(strstr(buffer, "send") != NULL) {
n = write(server->prevConnFD, "Prev\n", 6);
// tcpWrite(server->prevConnFD, "Prev\n");
n = write(server->nextConnFD, "Next\n", 6);
// tcpWrite(server->nextConnFD, "Next\n");
tcpWrite(server->prevConnFD, "Prev\n");
tcpWrite(server->nextConnFD, "Next\n");
} else if(strstr(buffer, "show") != NULL) {
printServerData(server);
}
Expand All @@ -160,8 +158,7 @@ void createServer(Server* server, int _onGoingOperation) {
server->nextConnFD = connectToNextServer(server); // Set the next server as the given server and establish a connection

sprintf(buffer, "NEW %d %s %s\n", server->myKey, server->myIp, server->myPort);
int n = write(server->nextConnFD, buffer, strlen(buffer)); // Give the successor your details
if(n == -1)/*error*/exit(1);
tcpWrite(server->nextConnFD, buffer); // Give the successor your details

serverInRing = 1;
ongoingOperation = 1;
Expand All @@ -184,8 +181,7 @@ void createServer(Server* server, int _onGoingOperation) {
server->nextConnFD = connectToNextServer(server); // Set the next server as the given server and establish a connection

sprintf(buffer, "NEW %d %s %s\n", server->myKey, server->myIp, server->myPort);
int n = write(server->nextConnFD, buffer, strlen(buffer)); // Give the successor your details
if(n == -1)/*error*/exit(1);
tcpWrite(server->nextConnFD, buffer); // Give the successor your details

serverInRing = 1;
ongoingOperation = 1;
Expand Down Expand Up @@ -221,12 +217,6 @@ void createServer(Server* server, int _onGoingOperation) {
client_sockets[0] = 0;
}

for(int i = 0; i < 3; i++) {
printf("Fd: %d\n", client_sockets[i]);
}

printf("Next: %d | Prev: %d", server->nextConnFD, server->prevConnFD);


//Else its on some other socket
for(int i = 0; i < 3; i++) {
Expand All @@ -247,9 +237,9 @@ void createServer(Server* server, int _onGoingOperation) {
server->nextConnFD = connectToNextServer(server);

sprintf(str, "SUCC %d %s %s\n", server->nextKey, server->nextIp, server->nextPort);
n = write(server->prevConnFD, str, strlen(str));
tcpWrite(server->prevConnFD, str);

n = write(server->nextConnFD, "SUCCCONF\n", 10);
tcpWrite(server->prevConnFD, "SUCCCONF\n");
} else if(newfd == server->prevConnFD) {
close(server->prevConnFD);
server->prevConnFD = -1;
Expand All @@ -272,9 +262,9 @@ void createServer(Server* server, int _onGoingOperation) {

//Send SUCC and SUCCCONF to previous and next server
sprintf(str, "SUCC %d %s %s\n", server->nextKey, server->nextIp, server->nextPort);
n = write(server->prevConnFD, str, strlen(str));

n = write(server->nextConnFD, "SUCCCONF\n", 10);
tcpWrite(server->prevConnFD, str);
tcpWrite(server->nextConnFD, "SUCCCONF\n");
} else {
if((server->nextConnFD <= 0) && (server->prevConnFD <= 0)) { //If there's only 1 server in the ring
// Set the double next as myself
Expand All @@ -283,21 +273,21 @@ void createServer(Server* server, int _onGoingOperation) {
// Create a second connection to the incoming server to be used as next
sscanf(buffer, "%s %d %s %s", str, &(server->nextKey), server->nextIp, server->nextPort);
server->nextConnFD = connectToNextServer(server);
n = write(server->nextConnFD, "SUCCCONF\n", 10);
tcpWrite(server->nextConnFD, "SUCCCONF\n");
} else {
n = write(server->prevConnFD, buffer, strlen(buffer));
tcpWrite(server->prevConnFD, buffer);
}
server->prevConnFD = newfd;
sprintf(str, "SUCC %d %s %s\n", server->nextKey, server->nextIp, server->nextPort);
n = write(server->prevConnFD, str, strlen(str));
tcpWrite(server->prevConnFD, str);
}
} else if(strstr(buffer, "SUCC ") != NULL) {
sscanf(buffer, "%s %d %s %s", str, &(server->doubleNextKey), server->doubleNextIp, server->doubleNextPort);
} else if(strstr(buffer, "SUCCCONF") != NULL) {
if(server->prevConnFD == -1) {
server->prevConnFD = newfd;
sprintf(str, "SUCC %d %s %s\n", server->nextKey, server->nextIp, server->nextPort);
n = write(server->prevConnFD, str, strlen(str));
tcpWrite(server->prevConnFD, str);
} else {
server->prevConnFD = newfd;
}
Expand All @@ -309,13 +299,11 @@ void createServer(Server* server, int _onGoingOperation) {
sscanf(buffer, "%s %d %d %s %s", str, &searchKey, &tmp, ip, port);
if(distance(searchKey, server->nextKey) > distance(searchKey, server->myKey)) {
//Send FND for the successor
n = write(server->nextConnFD, buffer, strlen(buffer));
if(n == -1)/*error*/exit(1);
tcpWrite(server->nextConnFD, buffer);
} else { //I am the nearest server
searchFd = connectToGivenServer(ip, port);
sprintf(str, "KEY %d %d %s %s\n", searchKey, server->nextKey, server->nextIp, server->nextPort);
n = write(searchFd, str, strlen(str));
if(n == -1)/*error*/exit(1);
tcpWrite(searchFd, str);
}
} else if(strstr(buffer, "KEY ") != NULL) {
int connectKey;
Expand Down Expand Up @@ -486,4 +474,16 @@ void tcpWrite(int toWriteFd, char * strToWrite) {
nleft-=nwritten;
strToWrite += nwritten;
}
}
}

int tpcRead(int toReadFd, char * bufferToRead) {
int nread, nleft;
nleft = strlen(bufferToRead);
while(nleft > 0) {
nread = read(toReadFd, bufferToRead, strlen(bufferToRead));
if (nread == -1) return -1;
if(nread == 0) return 0;
nleft -= nread;
bufferToRead += nread;
}
}
1 change: 1 addition & 0 deletions server.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,5 +40,6 @@ void copyNextToDouble(Server *server);
void copySelfToDouble(Server *server);
void cleanServer(Server * server);
void tcpWrite(int, char *);
int tpcRead(int, char *);

#endif

0 comments on commit 9e23af2

Please sign in to comment.