From 331dd8caee3a69244a1a358fd541fba30814a497 Mon Sep 17 00:00:00 2001 From: edgrif <edgrif> Date: Thu, 16 Apr 2009 09:11:27 +0000 Subject: [PATCH] add new featureset/style hash param. --- src/include/ZMap/zmapServerProtocol.h | 9 +++- src/zmapServer/zmapServer.c | 40 +++++++++------- src/zmapServer/zmapServer.h | 9 ++-- src/zmapServer/zmapServerProtocolHandler.c | 54 ++-------------------- src/zmapServer/zmapServerPrototype.h | 8 ++-- 5 files changed, 45 insertions(+), 75 deletions(-) diff --git a/src/include/ZMap/zmapServerProtocol.h b/src/include/ZMap/zmapServerProtocol.h index 5d142a290..d91870f52 100755 --- a/src/include/ZMap/zmapServerProtocol.h +++ b/src/include/ZMap/zmapServerProtocol.h @@ -27,9 +27,9 @@ * structs that give all the information/fields for the request/reply. * * HISTORY: - * Last edited: Mar 23 11:36 2009 (edgrif) + * Last edited: Apr 14 12:22 2009 (edgrif) * Created: Wed Feb 2 11:47:16 2005 (edgrif) - * CVS info: $Id: zmapServerProtocol.h,v 1.21 2009-04-06 13:27:43 edgrif Exp $ + * CVS info: $Id: zmapServerProtocol.h,v 1.22 2009-04-16 09:11:27 edgrif Exp $ *------------------------------------------------------------------- */ #ifndef ZMAP_PROTOCOL_H @@ -131,8 +131,13 @@ typedef struct GList *feature_sets_inout ; /* List of prespecified features sets or NULL to get all available sets. */ + /* Is this still needed ????? */ GList *required_styles_out ; /* May be derived from features. */ + + GHashTable *featureset_2_stylelist_out ; /* Mapping of each feature_set to all + the styles it requires. */ + } ZMapServerReqFeatureSetsStruct, *ZMapServerReqFeatureSets ; diff --git a/src/zmapServer/zmapServer.c b/src/zmapServer/zmapServer.c index 75b47d602..f75ca3ee7 100755 --- a/src/zmapServer/zmapServer.c +++ b/src/zmapServer/zmapServer.c @@ -26,9 +26,9 @@ * Description: * Exported functions: See ZMap/zmapServer.h * HISTORY: - * Last edited: Feb 4 15:15 2009 (edgrif) + * Last edited: Apr 14 14:53 2009 (edgrif) * Created: Wed Aug 6 15:46:38 2003 (edgrif) - * CVS info: $Id: zmapServer.c,v 1.35 2009-02-04 16:10:07 edgrif Exp $ + * CVS info: $Id: zmapServer.c,v 1.36 2009-04-16 09:11:27 edgrif Exp $ *------------------------------------------------------------------- */ @@ -175,11 +175,21 @@ ZMapServerResponseType zMapServerOpenConnection(ZMapServer server) } -ZMapServerResponseType zMapServerGetStyles(ZMapServer server, GData **styles_out) + +ZMapServerResponseType zMapServerFeatureSetNames(ZMapServer server, + GList **feature_sets_inout, + GList **required_styles_out, + GHashTable **featureset_2_stylelist_out) { ZMapServerResponseType result = ZMAP_SERVERRESPONSE_REQFAIL ; - result = server->last_response = (server->funcs->get_styles)(server->server_conn, styles_out) ; + zMapAssert(server && *feature_sets_inout && !*required_styles_out) ; + + result = server->last_response + = (server->funcs->feature_set_names)(server->server_conn, + feature_sets_inout, + required_styles_out, + featureset_2_stylelist_out) ; if (result != ZMAP_SERVERRESPONSE_OK) server->last_error_msg = ZMAPSERVER_MAKEMESSAGE(server->url->protocol, @@ -190,11 +200,11 @@ ZMapServerResponseType zMapServerGetStyles(ZMapServer server, GData **styles_out } -ZMapServerResponseType zMapServerStylesHaveMode(ZMapServer server, gboolean *have_mode) +ZMapServerResponseType zMapServerGetStyles(ZMapServer server, GData **styles_out) { ZMapServerResponseType result = ZMAP_SERVERRESPONSE_REQFAIL ; - result = server->last_response = (server->funcs->have_modes)(server->server_conn, have_mode) ; + result = server->last_response = (server->funcs->get_styles)(server->server_conn, styles_out) ; if (result != ZMAP_SERVERRESPONSE_OK) server->last_error_msg = ZMAPSERVER_MAKEMESSAGE(server->url->protocol, @@ -205,12 +215,11 @@ ZMapServerResponseType zMapServerStylesHaveMode(ZMapServer server, gboolean *hav } - -ZMapServerResponseType zMapServerGetSequence(ZMapServer server, GList *sequences_inout) +ZMapServerResponseType zMapServerStylesHaveMode(ZMapServer server, gboolean *have_mode) { ZMapServerResponseType result = ZMAP_SERVERRESPONSE_REQFAIL ; - result = server->last_response = (server->funcs->get_sequence)(server->server_conn, sequences_inout) ; + result = server->last_response = (server->funcs->have_modes)(server->server_conn, have_mode) ; if (result != ZMAP_SERVERRESPONSE_OK) server->last_error_msg = ZMAPSERVER_MAKEMESSAGE(server->url->protocol, @@ -221,12 +230,12 @@ ZMapServerResponseType zMapServerGetSequence(ZMapServer server, GList *sequences } -ZMapServerResponseType zMapServerGetServerInfo(ZMapServer server, char **database_path) + +ZMapServerResponseType zMapServerGetSequence(ZMapServer server, GList *sequences_inout) { ZMapServerResponseType result = ZMAP_SERVERRESPONSE_REQFAIL ; - - result = server->last_response = (server->funcs->get_info)(server->server_conn, database_path) ; + result = server->last_response = (server->funcs->get_sequence)(server->server_conn, sequences_inout) ; if (result != ZMAP_SERVERRESPONSE_OK) server->last_error_msg = ZMAPSERVER_MAKEMESSAGE(server->url->protocol, @@ -237,15 +246,12 @@ ZMapServerResponseType zMapServerGetServerInfo(ZMapServer server, char **databas } -ZMapServerResponseType zMapServerFeatureSetNames(ZMapServer server, - GList **feature_sets_inout, GList **required_styles_out) +ZMapServerResponseType zMapServerGetServerInfo(ZMapServer server, char **database_path) { ZMapServerResponseType result = ZMAP_SERVERRESPONSE_REQFAIL ; - zMapAssert(server && *feature_sets_inout && !*required_styles_out) ; - result = server->last_response - = (server->funcs->feature_set_names)(server->server_conn, feature_sets_inout, required_styles_out) ; + result = server->last_response = (server->funcs->get_info)(server->server_conn, database_path) ; if (result != ZMAP_SERVERRESPONSE_OK) server->last_error_msg = ZMAPSERVER_MAKEMESSAGE(server->url->protocol, diff --git a/src/zmapServer/zmapServer.h b/src/zmapServer/zmapServer.h index 8119549bb..9aeb2c23d 100755 --- a/src/zmapServer/zmapServer.h +++ b/src/zmapServer/zmapServer.h @@ -26,9 +26,9 @@ * details from caller. * * HISTORY: - * Last edited: Feb 4 15:22 2009 (edgrif) + * Last edited: Apr 14 12:22 2009 (edgrif) * Created: Wed Aug 6 15:48:47 2003 (edgrif) - * CVS info: $Id: zmapServer.h,v 1.11 2009-02-04 16:10:07 edgrif Exp $ + * CVS info: $Id: zmapServer.h,v 1.12 2009-04-16 09:11:27 edgrif Exp $ *------------------------------------------------------------------- */ #ifndef ZMAP_SERVER_H @@ -57,7 +57,10 @@ ZMapServerResponseType zMapServerCreateConnection(ZMapServer *server_out, void * int timeout, char *version_str); ZMapServerResponseType zMapServerOpenConnection(ZMapServer server) ; ZMapServerResponseType zMapServerGetServerInfo(ZMapServer server, char **database_path) ; -ZMapServerResponseType zMapServerFeatureSetNames(ZMapServer server, GList **feature_sets_inout, GList **required_styles) ; +ZMapServerResponseType zMapServerFeatureSetNames(ZMapServer server, + GList **feature_sets_inout, + GList **required_styles, + GHashTable **featureset_2_stylelist_out) ; ZMapServerResponseType zMapServerGetStyles(ZMapServer server, GData **types_out) ; ZMapServerResponseType zMapServerStylesHaveMode(ZMapServer server, gboolean *have_mode) ; ZMapServerResponseType zMapServerGetSequence(ZMapServer server, GList *sequences_inout) ; diff --git a/src/zmapServer/zmapServerProtocolHandler.c b/src/zmapServer/zmapServerProtocolHandler.c index dbd55c481..8ad963e14 100755 --- a/src/zmapServer/zmapServerProtocolHandler.c +++ b/src/zmapServer/zmapServerProtocolHandler.c @@ -25,9 +25,9 @@ * Description: * Exported functions: See ZMap/zmapServerProtocol.h * HISTORY: - * Last edited: Mar 20 11:59 2009 (edgrif) + * Last edited: Apr 16 10:09 2009 (edgrif) * Created: Thu Jan 27 13:17:43 2005 (edgrif) - * CVS info: $Id: zmapServerProtocolHandler.c,v 1.40 2009-03-20 12:40:44 edgrif Exp $ + * CVS info: $Id: zmapServerProtocolHandler.c,v 1.41 2009-04-16 09:11:27 edgrif Exp $ *------------------------------------------------------------------- */ @@ -92,10 +92,6 @@ static void findStyleCB(gpointer data, gpointer user_data) ; static gboolean getStylesFromFile(char *styles_list, char *styles_file, GData **styles_out) ; ZMapThreadReturnCode getStyles(ZMapServer server, ZMapServerReqStyles styles, char **err_msg_out) ; -static gboolean makeStylesDrawable(GData *styles, char **missing_styles_out) ; -static void drawableCB(GQuark key_id, gpointer data, gpointer user_data) ; - - /* Set up the list, note the special pthread macro that makes sure mutex is set up before * any threads can use it. */ @@ -392,7 +388,8 @@ ZMapThreadReturnCode zMapServerRequestHandler(void **slave_data, request->response = zMapServerFeatureSetNames(server, &(feature_sets->feature_sets_inout), - &(feature_sets->required_styles_out)) ; + &(feature_sets->required_styles_out), + &(feature_sets->featureset_2_stylelist_out)) ; if (request->response != ZMAP_SERVERRESPONSE_OK && request->response != ZMAP_SERVERRESPONSE_UNSUPPORTED) @@ -747,49 +744,6 @@ static gboolean getStylesFromFile(char *styles_list, char *styles_file, GData ** -static gboolean makeStylesDrawable(GData *styles, char **missing_styles_out) -{ - gboolean result = FALSE ; - DrawableStruct drawable_data = {FALSE} ; - - g_datalist_foreach(&styles, drawableCB, &drawable_data) ; - - if (drawable_data.missing_styles) - *missing_styles_out = g_string_free(drawable_data.missing_styles, FALSE) ; - - result = drawable_data.found_style ; - - return result ; -} - - - -/* A GDataForeachFunc() to make the given style drawable. */ -static void drawableCB(GQuark key_id, gpointer data, gpointer user_data) -{ - ZMapFeatureTypeStyle style = (ZMapFeatureTypeStyle)data ; - Drawable drawable_data = (Drawable)user_data ; - - if (zMapStyleIsDisplayable(style)) - { - if (zMapStyleMakeDrawable(style)) - { - drawable_data->found_style = TRUE ; - } - else - { - if (!(drawable_data->missing_styles)) - drawable_data->missing_styles = g_string_sized_new(1000) ; - - g_string_append_printf(drawable_data->missing_styles, "%s ", g_quark_to_string(key_id)) ; - } - } - - return ; -} - - - ZMapThreadReturnCode getStyles(ZMapServer server, ZMapServerReqStyles styles, char **err_msg_out) { ZMapThreadReturnCode thread_rc = ZMAPTHREAD_RETURNCODE_OK ; diff --git a/src/zmapServer/zmapServerPrototype.h b/src/zmapServer/zmapServerPrototype.h index 75881d082..46047775a 100755 --- a/src/zmapServer/zmapServerPrototype.h +++ b/src/zmapServer/zmapServerPrototype.h @@ -28,9 +28,9 @@ * include this header, its not really for general consumption. * * HISTORY: - * Last edited: Feb 4 15:01 2009 (edgrif) + * Last edited: Apr 14 14:50 2009 (edgrif) * Created: Wed Aug 6 15:48:47 2003 (edgrif) - * CVS info: $Id: zmapServerPrototype.h,v 1.24 2009-02-04 16:11:19 edgrif Exp $ + * CVS info: $Id: zmapServerPrototype.h,v 1.25 2009-04-16 09:11:27 edgrif Exp $ *------------------------------------------------------------------- */ #ifndef ZMAP_SERVER_PROTOTYPEP_H @@ -57,7 +57,9 @@ typedef ZMapServerResponseType (*ZMapServerOpenFunc)(void *server_conn) ; typedef ZMapServerResponseType (*ZMapServerGetServerInfo)(void *server_in, char **database_path_out) ; typedef ZMapServerResponseType (*ZMapServerGetFeatureSets)(void *server_in, - GList **feature_sets_inout, GList **required_styles) ; + GList **feature_sets_inout, + GList **required_styles_out, + GHashTable **featureset_2_stylelist_out) ; typedef ZMapServerResponseType (*ZMapServerGetStyles)(void *server_in, GData **styles_out) ; -- GitLab