#include #include #include #include #include #include #include #include #include "fastdfs/fdfs_global.h" #include "dfs_func.h" #include "fastdfs/fdfs_client.h" static ConnectionInfo *pTrackerServer; static ConnectionInfo storage_servers[FDFS_MAX_SERVERS_EACH_GROUP]; static int storage_server_count = 0; static ConnectionInfo *getConnectedStorageServer( ConnectionInfo *pStorageServer, int *err_no) { ConnectionInfo *pEnd; ConnectionInfo *pServer; pEnd = storage_servers + storage_server_count; for (pServer=storage_servers; pServerip_addr, pServer->ip_addr) == 0) { if (pServer->sock < 0) { *err_no = conn_pool_connect_server(pServer, \ SF_G_CONNECT_TIMEOUT); if (*err_no != 0) { return NULL; } } else { *err_no = 0; } return pServer; } } pServer = pEnd; memcpy(pServer, pStorageServer, sizeof(ConnectionInfo)); pServer->sock = -1; if ((*err_no=conn_pool_connect_server(pServer, \ SF_G_CONNECT_TIMEOUT)) != 0) { return NULL; } storage_server_count++; *err_no = 0; return pServer; } int dfs_init(const int proccess_index, const char *conf_filename) { int result; if ((result=fdfs_client_init(conf_filename)) != 0) { return result; } pTrackerServer = tracker_get_connection(); if (pTrackerServer == NULL) { return errno != 0 ? errno : ECONNREFUSED; } return 0; } void dfs_destroy() { ConnectionInfo *pEnd; ConnectionInfo *pServer; tracker_close_connection(pTrackerServer); pEnd = storage_servers + storage_server_count; for (pServer=storage_servers; pServer