Разработка собственных драйверов источников данных
Драйверы представляют собой часть менеджера ресурсов, отвечающих за работу с файлами определённых форматов.
Данная страница содержит:
gisdrv-опция_gis_core.so
. Например: gisdrv-sxf-local.so
. $GIS_ROOT/sbin/drivers
.
![]() | Для сборки драйверов требуются приватные заголовочные файлы. |
gisdrv-mtw-local.so
) gis_server_driver_t
. Для использования этих структур необходимо подключить заголовочный файл common_drivers.h
. #include "common_drivers.h"gis_server_driver_t* mtw_local_init( char *options ) {}
#define DRIVER_ID GIS_CORE_DRIVERS_MTW_LOCAL#define DRIVER_PREFIX "[MTW_local_driver] "#define DRIVER_FILE_EXTENSION MTW_FMT_EXTENSION".local."GCM_FILE_EXTENTION#define DRIVER_OPTION_NAME "mtw-local"#define DRIVER_ACRONYM "MTW local"#define DRIVER_ORIGIN_EXTENSION MTW_FMT_EXTENSION#define DRIVER_ORIGIN_DATA_PATH "mtw"
gis_server_driver_t driver_functions ={.connect = mtw_local_connect,.get_connection_state = mtw_local_get_connection_state,.get_info = mtw_local_get_info,.get_maps = NULL,.reset_cache = mtw_local_reset_file_cache,.synchronize_cache = mtw_local_synchronize_file_cache,.update_map_cache = mtw_local_update_file_cache};common_driver_ctx_t driver_ctx ={.prefix = DRIVER_PREFIX,.origin_maps_dirname = DRIVER_ORIGIN_MAP_FOLDER,.origin_extension = DRIVER_ORIGIN_EXTENSION,.mapstyle_dirname = NULL,.driver_gcm_extension = DRIVER_GCM_EXTENSION,.acronym = DRIVER_ACRONYM,.id = DRIVER_ID,.initialized = false,.state = NO_CONNECT,/* Convertion function is used as callback */.convert_map = mtw_local_convert_map};
В таблице представлено описание вышеуказанных полей структуры driver_functions:
Наименование сущности | Описание |
---|---|
.connect | Подключиться к серверу. |
.get_connection_state | Получение статуса соединения с сервером. |
.get_info | Получить путь до папки, содержащей кэш карт. |
.get_maps | Загрузить карты с удаленного картосервера. |
.reset_cache | Очистить источники и перекэшировать данные. |
.synchronize_cache | Синхронизировать папки источника и внутреннего формата GCM. (Добавить недостающие карты и удалить те, источников которых не обнаружено.) |
.update_map_cache | Перегенерировать карту во внутренний формат. |
В таблице представлено описание вышеуказанных полей структуры driver_ctx:
Наименование сущности | Описание |
---|---|
.prefix | Префикс драйвера для вывода отладочной информации. |
.origin_maps_dirname | Имя директории в каталоге $(GIS_ROOT)/data/maps/cache где хранятся исходные файлы карт. |
.origin_extension | Расширение оригинального файла карты. |
.mapstyle_dirname | Имя директории хранения классификаторов/картостилей. |
.driver_gcm_extension | Расширение файла после конвертации во внутренний формат. |
.acronym | Акроним драйвера. |
.id | Числовой идентификатор драйвера. |
.initialized | Флаг проверки инициализации драйвера. |
.state | Флаг проверки установки соединения с ядром. |
Прототипы функций:
int mtw_local_convert_map( gis_core_map_information_t *map_info );int mtw_local_connect( void );int mtw_local_reset_file_cache( gis_core_user_data_t *udata );int mtw_local_synchronize_file_cache( gis_core_user_data_t *udata );int mtw_local_update_file_cache( int32_t map_id , gis_core_user_data_t *udata );int mtw_local_get_info( gis_core_driver_info_t *info );gis_core_connection_state_t mtw_local_get_connection_state( void );
![]() | Идентификация драйвера приложениями gis-monitor и gis-control осуществляется при помощи driver_id. Для каждого драйвера он задаётся макросом DRIVER_ID, значения которого можно посмотреть на странице перечисления gis_core_driver_id_t в описании API. При необходимости использования пользовательского драйвера следует заменить любой из имеющихся драйверов пользовательским, с сохранением DRIVER_ID заменяемого драйвера. При этом следует изменить акроним драйвера (макрос DRIVER_ACRONYM) для корректной его идентификации в приложениях. |
Предыдущий раздел: Руководство разработчика