コード例 #1
0
ファイル: cli-exe-par-3.c プロジェクト: jpavieira/projPSIS
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);

	}
	
	
	
}
コード例 #2
0
ファイル: client.c プロジェクト: jsbruglie/psis
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);
}
コード例 #3
0
ファイル: psiskv_lib.c プロジェクト: Jobling/PSIS
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;
}
コード例 #4
0
ファイル: psiskv_lib.c プロジェクト: Jobling/PSIS
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;
}
コード例 #5
0
ファイル: client_write.c プロジェクト: jpavieira/projPSIS
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);
	
}