#ifndef EM_EXTENSION_MANAGER_H
#define EM_EXTENSION_MANAGER_H

#define EM_EXT_HEADER_MAGIC_MAX		 16
#define EM_EXT_HEADER_VER_SIZE		  2

#define EM_EXT_EXTENSION_DATA_MIN	   4
#define EM_EXT_EXTENSION_DATA_MAX	   2048
#define EM_EXT_TYPE_DATA_MAX			512

#define EM_EXT_DELIMITER_TYPE		   "/"
#define EM_EXT_DELIMITER_ITEM		   ","
#define EM_EXT_DELIMITER_DATA		   ":"

#define EM_EXT_TYPE_CLIENT			  "client"

#pragma pack(push, 1)
typedef struct ext_type_header {
	char magic[EM_EXT_HEADER_MAGIC_MAX];
	char version[EM_EXT_HEADER_VER_SIZE];
	int num_of_data;
} ext_type_header;
#pragma pack(pop)

int em_get_from_extension(const char *type, uint16_t mode, em_parsed_token * parsed_token, ext_type_header * head_data,
			  char *type_data);

#endif
