From e04b301fb724c6041e524c9605f336fc0173ec3d Mon Sep 17 00:00:00 2001 From: Joao-Maria-Janeiro Date: Thu, 12 Mar 2020 23:59:35 +0000 Subject: [PATCH] Sentry in progress --- main | Bin 14128 -> 14728 bytes main.c | 28 +++++++++++++++++++++++++++- server.c | 41 +++++++++++++++++++++++++++++++++++++++-- server.h | 14 +++++++++++--- test/tester | Bin 13176 -> 9296 bytes test/tester.c | 4 ++-- 6 files changed, 79 insertions(+), 8 deletions(-) diff --git a/main b/main index 3d49cfb28a7909dce16afd96b5256cd8b732e13a..cbbd88e4c8b7dace120981a61e6aca3dfa75f6ca 100755 GIT binary patch literal 14728 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 b=p%U(j@xD3@u(ECKkc #include "server.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + int checkIpPortValid(int, char **); int valid_digit(char *); int checkIp(char *); @@ -20,12 +31,27 @@ int main(int argc, char *argv[]) { while(1) { // The code will run until the "exit" command is summoned char buffer[100]; // Show the user interface - printf("Available commands:\n\n new i - create a new ring with the i server only \n exit\n"); + printf("Available commands:\n\n new i \n sentry i succi succi.IP succi.TCP \n exit\n"); fgets(buffer, 100 , stdin); const char delim[2] = " "; if(strcmp(strtok(strdup(buffer), delim), "new") == 0) { // Check if the command is the new command sscanf(buffer, "%s %d", aux, &(myServer->key)); // Get the server key createServer(myServer); + } else if(strcmp(strtok(strdup(buffer), delim), "sentry") == 0) { // Check if the command is the sentry command + sscanf(buffer, "%s %d %d %s %s", aux, &(myServer->key), &(myServer->nextKey), myServer->nextIp, myServer->nextPort); // Get the successor details + myServer->nextConnFD = connectToGivenServer(myServer); // Set the next server as the given server and establish a connection + + int n = write(myServer->nextConnFD, "SUCCCONF\n", 10); // Tell the successor to define this server as its predecessor + if(n == -1)/*error*/exit(1); + + n = read(myServer->nextConnFD, buffer, 128); // We already have all the data from the next server so we don't need to extract it here in the sentry + if(n==-1)/*error*/exit(1); + + write(1,"echo: ",6); write(1,buffer,n); + + // freeaddrinfo(res); + close(myServer->nextConnFD); + } else if(strcmp(buffer, "exit\n") == 0) { exit(0); } diff --git a/server.c b/server.c index e2d4204..3be9c0a 100644 --- a/server.c +++ b/server.c @@ -112,8 +112,22 @@ void createServer(Server* server) { } else { buffer[n] = '\0'; write(1,"received: ",11); write(1,buffer,n); // Print incoming message - n = write(newfd,"Server Response\n",17); - if(n==-1)/*error*/exit(1); + if(strcmp(buffer, "SUCCCONF\n") == 0) { // If this server is set as a successor + if(server->prevConnFD == 0) { // If the previous server is not set + server->prevConnFD = newfd; // Set the incoming request as the previous server + sprintf(buffer, "SUCC %d %s %s\n", server->key, server->myIp, server->myPort); + n = write(server->prevConnFD,buffer, strlen(buffer)); // Server gives its predecessor his info + if(n==-1)/*error*/exit(1); + } else { // If it already has a predecessor + + // This two operations that follow should only be done after the NEW command, which is where we no longer need to connect to the old predecessor + // // close(server->prevConnFD); // Close connection with predecessor + // // server->prevConnFD = newfd; // Set the incoming request as the previous server + + } + } + // n = write(newfd,"Server Response\n",17); + // if(n==-1)/*error*/exit(1); } } } @@ -121,3 +135,26 @@ void createServer(Server* server) { freeaddrinfo(res); close(fd); } + +int connectToGivenServer(Server* server) { // sentry 5 10 127.0.0.1 8005 + fd = socket(AF_INET,SOCK_STREAM,0); //TCP socket + if (fd == -1) exit(1); //error + + memset(&hints,0,sizeof hints); + hints.ai_family=AF_INET; //IPv4 + hints.ai_socktype=SOCK_STREAM; //TCP socket + + errcode = getaddrinfo(server->nextIp, server->nextPort,&hints,&res); + if(errcode != 0) { + printf("GET ADDRESS INFO ERROR\n"); + exit(1); + } + + n = connect(fd,res->ai_addr,res->ai_addrlen); + if(n == -1) { + printf("CONNECT ERROR\n"); + exit(1); + } + + return fd; +} diff --git a/server.h b/server.h index d3f0d26..89c200a 100644 --- a/server.h +++ b/server.h @@ -6,13 +6,21 @@ typedef struct server { char myPort[10]; int key; - char* nextIp; - char* previousIp; - char* doubleNextIp; + char nextIp[30]; + char nextPort[10]; + int nextKey; + + char doubleNextIp[30]; + char doubleNextPort[10]; + int doubleNextKey; + + int prevConnFD; // Holds the TCP connection to previous server + int nextConnFD; // Holds the TCP connection to next server }Server; void createServer(Server*); +int connectToGivenServer(Server*); #endif \ No newline at end of file diff --git a/test/tester b/test/tester index 7d9b3707fc81c07ec0e57d583fa13fa42b4ceb2d..57c0a3d2528e5e101fc3f5b5c78baff8ecad23af 100755 GIT binary patch literal 9296 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 G?f(VMG2K=G diff --git a/test/tester.c b/test/tester.c index 1f76489..189e094 100644 --- a/test/tester.c +++ b/test/tester.c @@ -37,7 +37,7 @@ void main(int argc, char *argv[]) { n=connect(fd,res->ai_addr,res->ai_addrlen); if(n==-1)/*error*/exit(1); - // while(1) { + while(1) { char user_input[128]; fgets(user_input, 100 , stdin); n=write(fd,user_input, strlen(user_input)); @@ -47,7 +47,7 @@ void main(int argc, char *argv[]) { if(n==-1)/*error*/exit(1); write(1,"Teste: ",8); write(1,buffer,n); write(1, "\n", 3); - // } + } freeaddrinfo(res); close(fd);