int main(){ char linha[100]; if(fork() == 0){ int kv = kv_connect("127.0.0.1", 9999); printf("CLIENT 0 connected to data-server\n"); fflush(stdout); for (uint32_t i = 0; i < MAX_VALUES; i +=2){ sprintf(linha, "%u", i); printf("CLIENT 0 writing key %d with value %s\n", i, linha); fflush(stdout); kv_write(kv, i , linha, strlen(linha)+1, 0); } printf("reading values\n"); for (uint32_t i = 0; i < MAX_VALUES; i ++){ if(kv_read(kv, i , linha, 100) == 0){ printf ("key - %10u value %s\n", i, linha); }else { printf("key - %10u does not exist in dictionary\n", i); } } kv_close(kv); }else{ int kv = kv_connect("127.0.0.1", 9999); printf("CLIENT 1 connected to data-server\n"); fflush(stdout); printf("reading values\n"); for (uint32_t i = 0; i < MAX_VALUES; i ++){ if(kv_read(kv, i , linha, 100) == 0){ printf ("key - %10u value %s\n", i, linha); }else { printf("key - %10u does not exist in dictionary\n", i); } } printf("writing values\n"); for (uint32_t i = 1; i < MAX_VALUES; i +=2){ sprintf(linha, "%u", i); printf("CLIENT 1 writing key %d with value %s\n", i, linha); fflush(stdout); kv_write(kv, i , linha, strlen(linha)+1, 0); } printf("press enter to delete even values\n"); for (uint32_t i = 0; i < MAX_VALUES; i +=2){ printf("deleting key %d\n", i); kv_delete(kv, i); } kv_close(kv); } }
int main(){ char read_val[MAX_BUFFER]; int ret; printf("Connecting to server\n"); int kv_descriptor = kv_connect("127.0.0.1",9998); // This descriptor is what the API will use from now on ret = kv_write(kv_descriptor, 1, "a", (strlen("a") + 1) * sizeof(char), 0); printf("kv_write returned %d \n", ret); ret = kv_write(kv_descriptor, 2, "ab", (strlen("ab") + 1) * sizeof(char), 0); printf("kv_write returned %d \n", ret); ret = kv_write(kv_descriptor, 3, "abc", (strlen("abc") + 1) * sizeof(char), 0); printf("kv_write returned %d \n", ret); ret = kv_delete(kv_descriptor, 2); printf("kv_delete returned %d \n", ret); printf("Reading from server\n"); kv_read(kv_descriptor, 3, read_val, MAX_BUFFER); printf("Closing connection to server\n"); kv_close(kv_descriptor); exit(0); }
int kv_delete(int kv_descriptor, uint32_t key){ int return_value; return_value = try_kv_delete(kv_descriptor, key); if(return_value == -1){ printf("Retrying...\n"); close(kv_descriptor); kv_descriptor = kv_connect(restore_server_ip, restore_server_port); if(kv_descriptor > 0){ return try_kv_delete(kv_descriptor, key); }else return -1; } return return_value; }
int kv_read(int kv_descriptor, uint32_t key, char * value, int value_length){ int return_value; return_value = try_kv_read(kv_descriptor, key, value, value_length); if(return_value == -1){ printf("Retrying...\n"); close(kv_descriptor); kv_descriptor = kv_connect(restore_server_ip, restore_server_port); if(kv_descriptor > 0){ return try_kv_read(kv_descriptor, key, value, value_length); }else return -1; } return return_value; }
int main(int argc, char*argv[]){ char linha[100]; pid_t pid = getpid(); if(argc != 3) exit(-1); int kv = kv_connect("127.0.0.1", 9999); if(kv==-1){ perror("kv_connect"); exit(-1); } printf("\nPID %d press enter to write values\n", pid);fflush(stdout); //getchar(); for (uint32_t i = atoi(argv[1]); i < atoi(argv[2]); i ++){ sprintf(linha, "%u", i); printf("PID %d writing key %d with value %s\n",pid, i, linha);fflush(stdout); kv_write(kv, i , linha, strlen(linha)+1, 0); } kv_close(kv); }