00001 #include <iostream> 00002 #include <fstream> 00003 #include <cstring> 00004 #include <stdlib.h> 00005 #include <sys/socket.h> 00006 #include <netinet/in.h> 00007 #include <arpa/inet.h> 00008 #include <strings.h> 00009 #include <pthread.h> 00010 00012 #define BACKLOG 5 00013 00015 #define MAX_LINE_LEN 1024 00016 00018 #define DIMBLOCK 128*sizeof(char) 00019 00020 using namespace std; 00021 00029 struct block_list { 00031 int ID; 00033 void *pointer; 00035 bool associated; 00037 block_list *succ; 00038 }; 00039 00049 struct server_list { 00051 char ip_add[15]; 00053 int port; 00055 int cl_sk; 00057 bool connected; 00059 block_list *block_head; 00061 server_list *succ; 00062 }; 00063 00069 class Library{ 00071 server_list *head; 00072 00083 server_list * find_server(int id); 00084 00094 block_list * find_block(int id, server_list *sl); 00095 00104 void create_socket(); 00105 00116 int client_connect(char *ip_add, int port, int cl_sk, server_list *sl); 00117 00130 void read_config_file(char *config_file); 00131 public: 00139 Library(); 00140 00151 void dm_init(char *config_file); 00152 00173 int dm_block_map(int ID, void *address); 00174 00189 void dm_block_unmap(int ID); 00190 00208 int dm_block_update(int ID); 00209 00228 int dm_block_write(int ID); 00229 00247 int dm_block_wait(int ID); 00248 00249 }; 00250 00251 00252