ZOO-Project
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
service.h File Reference
#include <stdbool.h>
#include <sys/stat.h>
#include "unistd.h"
#include <stdlib.h>
#include <ctype.h>
#include <stdio.h>
#include <string.h>
#include "version.h"

Go to the source code of this file.

Data Structures

struct  map
 KVP linked list. More...
 
struct  maps
 linked list of map pointer More...
 
struct  iotype
 Not named linked list. More...
 
struct  elements
 Metadata information about input or output. More...
 
struct  service
 Metadata information about a full Service. More...
 
struct  services
 Services chained list. More...
 
struct  registry
 Profile registry. More...
 

Macros

#define ZOO_SERVICE_H   1
 
#define ZOO_DLL_EXPORT
 
#define zStrdup   strdup
 
#define zOpen   open
 
#define zClose   close
 
#define zUnlink   unlink
 
#define zDup   dup
 
#define zDup2   dup2
 
#define zWrite   write
 
#define zGettimeofday   gettimeofday
 
#define ztimeval   timeval
 
#define zGetpid   getpid
 
#define zStatStruct   struct stat64
 
#define zStat   stat64
 
#define SERVICE_ACCEPTED   0
 
#define SERVICE_STARTED   1
 
#define SERVICE_PAUSED   2
 
#define SERVICE_SUCCEEDED   3
 
#define SERVICE_FAILED   4
 
#define SERVICE_DISMISSED   5
 
#define ELEMENTS_SIZE   (sizeof(char*)+(((2*sizeof(char*))+sizeof(maps*))*3)+sizeof(char*)+((sizeof(map*) + sizeof(iotype*))*2)+(2*sizeof(elements*)))
 
#define MAP_SIZE   (2*sizeof(char*))+sizeof(map*)
 
#define IOTYPE_SIZE   sizeof(map*) + sizeof(iotype*)
 
#define MAPS_SIZE   sizeof(char*)+sizeof(map*)+(2*sizeof(maps*))
 
#define SERVICE_SIZE   sizeof(char*) + 3*sizeof(map*) + 2*sizeof(elements*)
 
#define SERVICES_SIZE   sizeof(service*)+sizeof(services*)
 
#define REGISTRY_SIZE   sizeof(char*)+sizeof(services*)+sizeof(registry*)
 
#define SHMSZ   27
 
#define NULLMAP   NULL
 
#define zooLogMsg(file, message)   logMessage(__FILE__, __func__, __LINE__, (file), (message))
 
#define zooLog   logMessage(__FILE__, __func__, __LINE__)
 
#define ZOO_DLL_EXPORT
 
#define __bool_true_false_are_defined   1
 
#define zStrdup   strdup
 The crossplatform strdup alias. More...
 
#define zOpen   open
 The crossplatform open alias. More...
 
#define zClose   close
 The crossplatform close alias. More...
 
#define zUnlink   unlink
 The crossplatform unlink alias. More...
 
#define zDup   dup
 The crossplatform dup alias. More...
 
#define zDup2   dup2
 The crossplatform dup2 alias. More...
 
#define zWrite   write
 The crossplatform write alias. More...
 
#define zGettimeofday   gettimeofday
 The crossplatform gettimeofday alias. More...
 
#define ztimeval   timeval
 The crossplatform timeval alias. More...
 
#define zGetpid   getpid
 The crossplatform getpid alias. More...
 
#define zStatStruct   struct stat64
 
#define zStat   stat64
 
#define SERVICE_ACCEPTED   0
 The global accepted status for a service. More...
 
#define SERVICE_STARTED   1
 The global started status for a service. More...
 
#define SERVICE_PAUSED   2
 The global paused status for a service. More...
 
#define SERVICE_SUCCEEDED   3
 The global succeeded status for a service. More...
 
#define SERVICE_FAILED   4
 The global failed status for a service. More...
 
#define SERVICE_DISMISSED   5
 The global dismissed status for a service. More...
 
#define ELEMENTS_SIZE   (sizeof(char*)+(((2*sizeof(char*))+sizeof(maps*))*3)+sizeof(char*)+((sizeof(map*) + sizeof(iotype*))*2)+(2*sizeof(elements*)))
 The memory size to create an elements. More...
 
#define MAP_SIZE   (2*sizeof(char*))+sizeof(map*)
 The memory size to create a map. More...
 
#define IOTYPE_SIZE   sizeof(map*) + sizeof(iotype*)
 The memory size to create an iotype. More...
 
#define MAPS_SIZE   sizeof(char*)+sizeof(map*)+(2*sizeof(maps*))
 The memory size to create a maps. More...
 
#define SERVICE_SIZE   sizeof(char*) + 3*sizeof(map*) + 2*sizeof(elements*)
 The memory size to create a service. More...
 
#define SERVICES_SIZE   sizeof(service*)+sizeof(services*)
 The memory size to create a services. More...
 
#define REGISTRY_SIZE   sizeof(char*)+sizeof(services*)+sizeof(registry*)
 The memory size to create a registry. More...
 
#define SHMSZ   27
 
#define NULLMAP   NULL
 
#define zooLogMsg(file, message)   logMessage(__FILE__, __func__, __LINE__, (file), (message))
 
#define zooLog   logMessage(__FILE__, __func__, __LINE__)
 

Typedefs

typedef struct map map
 KVP linked list. More...
 
typedef struct maps maps
 linked list of map pointer More...
 
typedef struct iotype iotype
 Not named linked list. More...
 
typedef struct elements elements
 Metadata information about input or output. More...
 
typedef struct service service
 Metadata information about a full Service. More...
 
typedef struct services services
 Services chained list. More...
 
typedef struct registry registry
 Profile registry. More...
 

Enumerations

enum  WPSException {
  StatusOK, MissingParameterValue, InvalidParameterValue, NoApplicableCode,
  NotEnoughStorage, ServerBusy, FileSizeExceeded, StorageNotSupported,
  VersionNegotiationFailed, NoSuchProcess, NoSuchMode, NoSuchInput,
  NoSuchOutput, DataNotAccessible, SizeExceeded, TooManyInputs,
  TooManyOutputs, NoSuchFormat, WrongInputData, InternalServerError,
  NoSuchJob, ResultNotReady, StatusOK, MissingParameterValue,
  InvalidParameterValue, NoApplicableCode, NotEnoughStorage, ServerBusy,
  FileSizeExceeded, StorageNotSupported, VersionNegotiationFailed, NoSuchProcess,
  NoSuchMode, NoSuchInput, NoSuchOutput, DataNotAccessible,
  SizeExceeded, TooManyInputs, TooManyOutputs, NoSuchFormat,
  WrongInputData, InternalServerError, NoSuchJob, ResultNotReady
}
 

Functions

static int zMkdir (const char *pccPath)
 The crossplatform mkdir alias. More...
 
static int zSleep (const long millisecond)
 The crossplatform sleep alias. More...
 
ZOO_DLL_EXPORT void _dumpMap (map *)
 Dump a map on stderr. More...
 
ZOO_DLL_EXPORT void dumpMap (map *)
 Dump a map on stderr, see _dumpMap() More...
 
ZOO_DLL_EXPORT void dumpMaps (maps *m)
 Dump a maps on stderr, see dumpMap(). More...
 
ZOO_DLL_EXPORT void dumpMapToFile (map *, FILE *)
 Dump a map to a file. More...
 
ZOO_DLL_EXPORT void dumpMapsToFile (maps *, char *, int)
 Dump a maps to a file, see _dumpMapsToFile(). More...
 
ZOO_DLL_EXPORT mapcreateMap (const char *, const char *)
 Create a new map. More...
 
ZOO_DLL_EXPORT mapscreateMaps (const char *)
 Create a new maps with the given name. More...
 
ZOO_DLL_EXPORT int count (map *)
 Count number of map in a map. More...
 
ZOO_DLL_EXPORT bool hasKey (map *, const char *)
 Verify if a key exist in a map. More...
 
ZOO_DLL_EXPORT mapsgetMaps (maps *, const char *)
 Access a specific maps. More...
 
ZOO_DLL_EXPORT mapgetMap (map *, const char *)
 Access a specific map. More...
 
ZOO_DLL_EXPORT mapgetLastMap (map *)
 Access the last map. More...
 
ZOO_DLL_EXPORT mapgetMapFromMaps (maps *, const char *, const char *)
 Access a specific map from a maps. More...
 
ZOO_DLL_EXPORT void freeMap (map **)
 Free allocated memory of a map. More...
 
ZOO_DLL_EXPORT void freeMaps (maps **mo)
 Free allocated memory of a maps. More...
 
ZOO_DLL_EXPORT iotypecreateIoType ()
 Create a new iotype*. More...
 
ZOO_DLL_EXPORT elementscreateEmptyElements ()
 Create an empty elements. More...
 
ZOO_DLL_EXPORT elementscreateElements (const char *)
 Create a named elements. More...
 
ZOO_DLL_EXPORT void setElementsName (elements **, char *)
 Set the name of an elements. More...
 
ZOO_DLL_EXPORT bool hasElement (elements *, const char *)
 Verify if an elements contains a name equal to the given key. More...
 
ZOO_DLL_EXPORT elementsgetElements (elements *, const char *)
 Access a specific elements named key. More...
 
ZOO_DLL_EXPORT void freeIOType (iotype **)
 Free allocated memory of an iotype. More...
 
ZOO_DLL_EXPORT void freeElements (elements **)
 Free allocated memory of an elements. More...
 
ZOO_DLL_EXPORT void setServiceName (service **, char *)
 Set the name of a service. More...
 
ZOO_DLL_EXPORT servicecreateService ()
 Allocate memory for a service. More...
 
ZOO_DLL_EXPORT void freeService (service **)
 Free allocated memory of a service. More...
 
ZOO_DLL_EXPORT void addToMap (map *, const char *, const char *)
 Add key value pair to an existing map. More...
 
ZOO_DLL_EXPORT void addIntToMap (map *, const char *, const int)
 Add a key and an integer value to an existing map. More...
 
ZOO_DLL_EXPORT void addIntToMapArray (map *, const char *, int, const int)
 Add a key and an integer value to an existing map array. More...
 
ZOO_DLL_EXPORT mapaddToMapWithSize (map *, const char *, const char *, int)
 Add a key and a binary value to an existing map. More...
 
ZOO_DLL_EXPORT void addMapToMap (map **, map *)
 Add a map at the end of another map. More...
 
ZOO_DLL_EXPORT void addMapToIoType (iotype **, map *)
 Add a map to iotype. More...
 
ZOO_DLL_EXPORT mapgetMapOrFill (map **, const char *, const char *)
 Access a specific map or set its value. More...
 
ZOO_DLL_EXPORT bool contains (map *, map *)
 Verify if a map is contained in another map. More...
 
ZOO_DLL_EXPORT iotypegetIoTypeFromElement (elements *, char *, map *)
 Access a specific iotype from an elements. More...
 
ZOO_DLL_EXPORT void loadMapBinary (map **, map *, int)
 Load binary values from a map (in) and add them to another map (out) More...
 
ZOO_DLL_EXPORT void loadMapBinaries (map **, map *)
 Load binary values from a map (in) and add them to another map (out). More...
 
ZOO_DLL_EXPORT mapsdupMaps (maps **)
 Duplicate a Maps. More...
 
ZOO_DLL_EXPORT void addMapsToMaps (maps **, maps *)
 Add a maps at the end of another maps. More...
 
ZOO_DLL_EXPORT mapgetMapArray (map *, const char *, int)
 Access a specific map array element. More...
 
ZOO_DLL_EXPORT void setMapArray (map *, const char *, int, const char *)
 Add a key value in a MapArray for a specific index. More...
 
ZOO_DLL_EXPORT mapgetMapType (map *)
 Access the map "type". More...
 
ZOO_DLL_EXPORT int addMapsArrayToMaps (maps **, maps *, char *)
 Add a Maps containing a MapArray to a Maps. More...
 
ZOO_DLL_EXPORT void setMapInMaps (maps *, const char *, const char *, const char *)
 Set a key value pair to a map contained in a Maps. More...
 
ZOO_DLL_EXPORT void dumpElements (elements *)
 Dump an elements on stderr. More...
 
ZOO_DLL_EXPORT void dumpElementsAsYAML (elements *, int)
 Dump an elements on stderr using the YAML syntaxe. More...
 
ZOO_DLL_EXPORT elementsdupElements (elements *)
 Duplicate an elements. More...
 
ZOO_DLL_EXPORT void addToElements (elements **, elements *)
 Add an elements to another elements. More...
 
ZOO_DLL_EXPORT void dumpService (service *)
 Dump a service on stderr. More...
 
ZOO_DLL_EXPORT void dumpServiceAsYAML (service *)
 Dump a service on stderr using the YAML syntaxe. More...
 
ZOO_DLL_EXPORT servicedupService (service *)
 Duplicate a service. More...
 
ZOO_DLL_EXPORT void dumpRegistry (registry *)
 Print the registry on stderr. More...
 
ZOO_DLL_EXPORT bool addServiceToRegistry (registry **, char *, service *)
 Add a service to the registry. More...
 
ZOO_DLL_EXPORT void freeRegistry (registry **)
 Free memory allocated for the registry. More...
 
ZOO_DLL_EXPORT servicegetServiceFromRegistry (registry *, char *, char *)
 Access a service in the registry. More...
 
ZOO_DLL_EXPORT void inheritMap (map **, map *)
 Apply inheritance to an out map from a reference in map. More...
 
ZOO_DLL_EXPORT void inheritIOType (iotype **, iotype *)
 Apply inheritance to an out iotype from a reference in iotype. More...
 
ZOO_DLL_EXPORT void inheritElements (elements **, elements *)
 Apply inheritance to an out elements from a reference in elements. More...
 
ZOO_DLL_EXPORT void inheritance (registry *, service **)
 Apply inheritance to a service based on a registry. More...
 
ZOO_DLL_EXPORT void mapsToCharXXX (maps *, char ***)
 Convert a maps to a char*** (only used for Fortran support) More...
 
ZOO_DLL_EXPORT void charxxxToMaps (char ***, maps **)
 Convert a char*** to a maps (only used for Fortran support) More...
 
ZOO_DLL_EXPORT bool nonempty (map *map)
 Verify that a map has a value. More...
 
ZOO_DLL_EXPORT bool hasvalue (maps *source, const char *node, const char *key, map **kvp)
 Verify that a particular map value exists in a maps data structure, and obtain that value. More...
 
ZOO_DLL_EXPORT char * allocateMapValue (map *node, size_t num_bytes)
 

Variables

static const char *const WPSExceptionCode []
 
static const char *const WPSExceptionText []
 

Data Structure Documentation

struct map

KVP linked list.

Data Fields
char * name the key
struct map * next the pointer to the next map if any or NULL
char * value the value
struct maps

linked list of map pointer

Small object to store WPS KVP set.

Data Fields
struct maps * child the child maps
struct map * content the content map
char * name the maps name
struct maps * next the pointer to the next maps if any or NULL
struct iotype

Not named linked list.

Used to store information about formats, such as mimeType, encoding ...

Data Fields
struct map * content the content map
struct iotype * next the pointer to the next iotype if any or NULL
struct elements

Metadata information about input or output.

The elements are used to store metadata information defined in the ZCFG.

Data Fields
struct map * additional_parameters the additional parameters map
struct elements * child the pointer to the children element if any (or NULL)
struct map * content the content map
struct iotype * defaults the default iotype
char * format the format: LiteralData or ComplexData or BoundingBoxData
struct map * metadata the metadata map
char * name the name
struct elements * next the pointer to the next element if any (or NULL)
struct iotype * supported the supported iotype
struct service

Metadata information about a full Service.

Data Fields
struct map * additional_parameters the additional parameters map
struct map * content the content map
struct elements * inputs the inputs elements
struct map * metadata the metadata map
char * name the name
struct elements * outputs the outputs elements
struct services

Services chained list.

Data Fields
struct service * content the content service pointer
struct services * next the pointer to the next services*
struct registry

Profile registry.

Data Fields
struct services * content the content services pointer
char * name the name
struct registry * next the next registry pointer

Macro Definition Documentation

#define __bool_true_false_are_defined   1
#define ELEMENTS_SIZE   (sizeof(char*)+(((2*sizeof(char*))+sizeof(maps*))*3)+sizeof(char*)+((sizeof(map*) + sizeof(iotype*))*2)+(2*sizeof(elements*)))
#define ELEMENTS_SIZE   (sizeof(char*)+(((2*sizeof(char*))+sizeof(maps*))*3)+sizeof(char*)+((sizeof(map*) + sizeof(iotype*))*2)+(2*sizeof(elements*)))

The memory size to create an elements.

#define IOTYPE_SIZE   sizeof(map*) + sizeof(iotype*)
#define IOTYPE_SIZE   sizeof(map*) + sizeof(iotype*)

The memory size to create an iotype.

#define MAP_SIZE   (2*sizeof(char*))+sizeof(map*)
#define MAP_SIZE   (2*sizeof(char*))+sizeof(map*)

The memory size to create a map.

#define MAPS_SIZE   sizeof(char*)+sizeof(map*)+(2*sizeof(maps*))
#define MAPS_SIZE   sizeof(char*)+sizeof(map*)+(2*sizeof(maps*))

The memory size to create a maps.

#define NULLMAP   NULL
#define NULLMAP   NULL
#define REGISTRY_SIZE   sizeof(char*)+sizeof(services*)+sizeof(registry*)
#define REGISTRY_SIZE   sizeof(char*)+sizeof(services*)+sizeof(registry*)

The memory size to create a registry.

#define SERVICE_ACCEPTED   0
#define SERVICE_ACCEPTED   0

The global accepted status for a service.

#define SERVICE_DISMISSED   5
#define SERVICE_DISMISSED   5

The global dismissed status for a service.

#define SERVICE_FAILED   4
#define SERVICE_FAILED   4

The global failed status for a service.

#define SERVICE_PAUSED   2
#define SERVICE_PAUSED   2

The global paused status for a service.

#define SERVICE_SIZE   sizeof(char*) + 3*sizeof(map*) + 2*sizeof(elements*)
#define SERVICE_SIZE   sizeof(char*) + 3*sizeof(map*) + 2*sizeof(elements*)

The memory size to create a service.

#define SERVICE_STARTED   1
#define SERVICE_STARTED   1

The global started status for a service.

#define SERVICE_SUCCEEDED   3
#define SERVICE_SUCCEEDED   3

The global succeeded status for a service.

#define SERVICES_SIZE   sizeof(service*)+sizeof(services*)
#define SERVICES_SIZE   sizeof(service*)+sizeof(services*)

The memory size to create a services.

#define SHMSZ   27
#define SHMSZ   27
#define zClose   close

The crossplatform close alias.

#define zClose   close
#define zDup   dup

The crossplatform dup alias.

#define zDup   dup
#define zDup2   dup2
#define zDup2   dup2

The crossplatform dup2 alias.

#define zGetpid   getpid

The crossplatform getpid alias.

#define zGetpid   getpid
#define zGettimeofday   gettimeofday

The crossplatform gettimeofday alias.

#define zGettimeofday   gettimeofday
#define ZOO_DLL_EXPORT
#define ZOO_DLL_EXPORT
#define ZOO_SERVICE_H   1
#define zooLog   logMessage(__FILE__, __func__, __LINE__)
#define zooLog   logMessage(__FILE__, __func__, __LINE__)
#define zooLogMsg (   file,
  message 
)    logMessage(__FILE__, __func__, __LINE__, (file), (message))
#define zooLogMsg (   file,
  message 
)    logMessage(__FILE__, __func__, __LINE__, (file), (message))
#define zOpen   open
#define zOpen   open

The crossplatform open alias.

#define zStat   stat64
#define zStat   stat64
#define zStatStruct   struct stat64
#define zStatStruct   struct stat64
#define zStrdup   strdup
#define zStrdup   strdup

The crossplatform strdup alias.

#define ztimeval   timeval

The crossplatform timeval alias.

#define ztimeval   timeval
#define zUnlink   unlink

The crossplatform unlink alias.

#define zUnlink   unlink
#define zWrite   write
#define zWrite   write

The crossplatform write alias.

Typedef Documentation

typedef struct elements elements

Metadata information about input or output.

The elements are used to store metadata information defined in the ZCFG.

typedef struct iotype iotype

Not named linked list.

Used to store information about formats, such as mimeType, encoding ...

typedef struct map map

KVP linked list.

typedef struct maps maps

linked list of map pointer

Small object to store WPS KVP set.

typedef struct registry registry

Profile registry.

typedef struct service service

Metadata information about a full Service.

typedef struct services services

Services chained list.

Enumeration Type Documentation

Enumerator
StatusOK 
MissingParameterValue 
InvalidParameterValue 
NoApplicableCode 
NotEnoughStorage 
ServerBusy 
FileSizeExceeded 
StorageNotSupported 
VersionNegotiationFailed 
NoSuchProcess 
NoSuchMode 
NoSuchInput 
NoSuchOutput 
DataNotAccessible 
SizeExceeded 
TooManyInputs 
TooManyOutputs 
NoSuchFormat 
WrongInputData 
InternalServerError 
NoSuchJob 
ResultNotReady 
StatusOK 
MissingParameterValue 
InvalidParameterValue 
NoApplicableCode 
NotEnoughStorage 
ServerBusy 
FileSizeExceeded 
StorageNotSupported 
VersionNegotiationFailed 
NoSuchProcess 
NoSuchMode 
NoSuchInput 
NoSuchOutput 
DataNotAccessible 
SizeExceeded 
TooManyInputs 
TooManyOutputs 
NoSuchFormat 
WrongInputData 
InternalServerError 
NoSuchJob 
ResultNotReady 

Function Documentation

ZOO_DLL_EXPORT void _dumpMap ( map pmMap)

Dump a map on stderr.

Parameters
pmMapthe map to dump
ZOO_DLL_EXPORT void addIntToMap ( map pMap,
const char *  pccName,
const int  iValue 
)

Add a key and an integer value to an existing map.

Parameters
pMapthe map to add the KVP
pccNamethe key to add
iValuethe corresponding value to add
ZOO_DLL_EXPORT void addIntToMapArray ( map pmMap,
const char *  pccName,
int  iIndex,
const int  icValue 
)

Add a key and an integer value to an existing map array.

Parameters
pmMapthe map to add the KVP
pccNamethe key to add
iIndexthe index of the MapArray
icValuethe corresponding value to add
ZOO_DLL_EXPORT int addMapsArrayToMaps ( maps **  pmsOut,
maps pmsIn,
char *  pcType 
)

Add a Maps containing a MapArray to a Maps.

See also
getMapType
Parameters
pmsOutthe maps
pmsInthe maps
pcTypethe map "type"
Returns
ZOO_DLL_EXPORT void addMapsToMaps ( maps **  ppmsOut,
maps pmIn 
)

Add a maps at the end of another maps.

See also
addMapToMap, dupMaps, getMaps
Parameters
ppmsOutthe maps to add mi
pmInthe maps to add to mo
ZOO_DLL_EXPORT void addMapToIoType ( iotype **  piotType,
map pmMap 
)

Add a map to iotype.

Parameters
piotTypethe iotype to add the map
pmMapthe map to add to io
ZOO_DLL_EXPORT void addMapToMap ( map **  pmMapOut,
map pmMapIn 
)

Add a map at the end of another map.

Parameters
pmMapOutthe map to add pmMapIn to
pmMapInthe map to add to pmMapOut
ZOO_DLL_EXPORT bool addServiceToRegistry ( registry **  prReg,
char *  pcName,
service psContent 
)

Add a service to the registry.

Parameters
prRegthe resgitry to add the service
pcNamethe registry name to update
psContentthe service to add
ZOO_DLL_EXPORT void addToElements ( elements **  ppeElem,
elements peELem 
)

Add an elements to another elements.

See also
dupElements
Parameters
ppeElemthe elements to add the e
peELemthe elements to be added to m
ZOO_DLL_EXPORT void addToMap ( map pMap,
const char *  pccName,
const char *  pccValue 
)

Add key value pair to an existing map.

Parameters
pMapthe map to add the KVP
pccNamethe key to add
pccValuethe corresponding value to add
ZOO_DLL_EXPORT map* addToMapWithSize ( map pMap,
const char *  pccName,
const char *  pccValue,
int  iSize 
)

Add a key and a binary value to an existing map.

Parameters
pMapthe map to add the KVP
pccNamethe key to add
pccValuethe corresponding value to add
iSizethe size of the given value
Returns
a pointer to the updated map m
ZOO_DLL_EXPORT char* allocateMapValue ( map node,
size_t  num_bytes 
)
ZOO_DLL_EXPORT void charxxxToMaps ( char ***  pppcValues,
maps **  ppmsMaps 
)

Convert a char*** to a maps (only used for Fortran support)

Parameters
pppcValuesthe array to convert
ppmsMapsthe resulting maps
ZOO_DLL_EXPORT bool contains ( map pmMap,
map pmSearch 
)

Verify if a map is contained in another map.

Parameters
pmMapthe map to search for i
pmSearchthe map to search in m
Returns
true if i was found in m, false in other case
ZOO_DLL_EXPORT int count ( map pmMap)

Count number of map in a map.

Parameters
pmMapthe map to count
Returns
number of map in a map
ZOO_DLL_EXPORT elements* createElements ( const char *  pcName)

Create a named elements.

Parameters
pcNamethe elements name
Returns
a pointer to the allocated elements
ZOO_DLL_EXPORT elements* createEmptyElements ( )

Create an empty elements.

Returns
a pointer to the allocated elements
ZOO_DLL_EXPORT iotype* createIoType ( )

Create a new iotype*.

Returns
a pointer to the allocated iotype
ZOO_DLL_EXPORT map* createMap ( const char *  pccName,
const char *  pccValue 
)

Create a new map.

Parameters
pccNamethe key to add to the map
pccValuethe corresponding value to add to the map
Returns
a pointer to the allocated map
ZOO_DLL_EXPORT maps* createMaps ( const char *  pccName)

Create a new maps with the given name.

Parameters
pccNameof the maps
Returns
the allocated map
ZOO_DLL_EXPORT service* createService ( )

Allocate memory for a service.

Require to call free after calling this function.

Returns
the service
ZOO_DLL_EXPORT void dumpElements ( elements peElem)

Dump an elements on stderr.

Parameters
peElemthe elements to dump
ZOO_DLL_EXPORT void dumpElementsAsYAML ( elements peElem,
int  iLevel 
)

Dump an elements on stderr using the YAML syntaxe.

Parameters
peElemthe elements to dump
iLevelthe current level
ZOO_DLL_EXPORT void dumpMap ( map pmMap)

Dump a map on stderr, see _dumpMap()

Parameters
pmMapthe map to dump
ZOO_DLL_EXPORT void dumpMaps ( maps pmMap)

Dump a maps on stderr, see dumpMap().

Parameters
pmMapthe map to dump
ZOO_DLL_EXPORT void dumpMapsToFile ( maps pmsMaps,
char *  pcaFilePath,
int  iLimit 
)

Dump a maps to a file, see _dumpMapsToFile().

Parameters
pmsMapsthe map to dump
pcaFilePaththe the file pointer to store the map
iLimitthe number of maps to print (0 for no limit)
ZOO_DLL_EXPORT void dumpMapToFile ( map pmMap,
FILE *  pfFile 
)

Dump a map to a file.

Parameters
pmMapthe map to dump to file
pfFilethe file pointer to store the map
ZOO_DLL_EXPORT void dumpRegistry ( registry prReg)

Print the registry on stderr.

Parameters
prRegthe registry
ZOO_DLL_EXPORT void dumpService ( service psServ)

Dump a service on stderr.

Parameters
psServthe service to dump
ZOO_DLL_EXPORT void dumpServiceAsYAML ( service psServ)

Dump a service on stderr using the YAML syntaxe.

Parameters
psServthe service to dump
ZOO_DLL_EXPORT elements* dupElements ( elements peElem)

Duplicate an elements.

Parameters
peElemthe elements to clone
Returns
the allocated elements containing a copy of the elements e
ZOO_DLL_EXPORT maps* dupMaps ( maps **  ppmsOut)

Duplicate a Maps.

Parameters
ppmsOutthe maps to clone
Returns
the allocated maps containing a copy of the mo maps
ZOO_DLL_EXPORT service* dupService ( service psServ)

Duplicate a service.

Parameters
psServthe service to clone
Returns
the allocated service containing a copy of the serfvice s
ZOO_DLL_EXPORT void freeElements ( elements **  peElem)

Free allocated memory of an elements.

Require to call free on e after calling this function.

Parameters
peElemthe iotype to free
ZOO_DLL_EXPORT void freeIOType ( iotype **  piotIO)

Free allocated memory of an iotype.

Require to call free on i after calling this function.

Parameters
piotIOthe iotype to free
ZOO_DLL_EXPORT void freeMap ( map **  pmMap)

Free allocated memory of a map.

Require to call free on mo after calling this function.

Parameters
pmMapthe map to free
ZOO_DLL_EXPORT void freeMaps ( maps **  pmMap)

Free allocated memory of a maps.

Require to call free on mo after calling this function.

Parameters
pmMapthe maps to free
ZOO_DLL_EXPORT void freeRegistry ( registry **  prReg)

Free memory allocated for the registry.

Parameters
prRegthe registry
ZOO_DLL_EXPORT void freeService ( service **  psService)

Free allocated memory of a service.

Require to be invoked for every createService call.

Parameters
psServicethe service to free
ZOO_DLL_EXPORT elements* getElements ( elements peElem,
const char *  pccKey 
)

Access a specific elements named key.

Parameters
peElemthe elements to search
pccKeythe elements name to search
Returns
a pointer to the specific element if found, NULL in other case.
ZOO_DLL_EXPORT iotype* getIoTypeFromElement ( elements peElem,
char *  pcName,
map pcValues 
)

Access a specific iotype from an elements.

Parameters
peElemthe elements to search for the name
pcNamethe name to search in the elements e
pcValuesthe map to verify it was contained in the defaults or supported content of the elements e
Returns
a pointer on the iotype found or NULL if not found
ZOO_DLL_EXPORT map* getLastMap ( map pmMap)

Access the last map.

Parameters
pmMapthe map to search for the lastest map
Returns
a pointer on the lastest map found or NULL if not found
ZOO_DLL_EXPORT map* getMap ( map pmMap,
const char *  pccKey 
)

Access a specific map.

Parameters
pmMapthe map to search for the key
pccKeythe key to search in the map
Returns
a pointer on the map found or NULL if not found
ZOO_DLL_EXPORT map* getMapArray ( map pmMap,
const char *  pccKey,
int  iIndex 
)

Access a specific map array element.

Parameters
pmMapthe map to search for the key
pccKeythe key to search in the map
iIndexof the MapArray
Returns
a pointer on the map found or NULL if not found
ZOO_DLL_EXPORT map* getMapFromMaps ( maps pmMap,
const char *  pccKey,
const char *  pccSubkey 
)

Access a specific map from a maps.

Parameters
pmMapthe maps to search for the key
pccKeythe key to search in the maps
pccSubkeythe key to search in the map (found for the key, if any)
Returns
a pointer on the map found or NULL if not found
ZOO_DLL_EXPORT map* getMapOrFill ( map **  ppmMap,
const char *  pccKey,
const char *  pccValue 
)

Access a specific map or set its value.

Parameters
ppmMapthe map to search for the key
pccKeythe key to search/add in the map
pccValuethe value to add if the key does not exist
Returns
a pointer on the map found or NULL if not found
ZOO_DLL_EXPORT maps* getMaps ( maps pmsMaps,
const char *  pccKey 
)

Access a specific maps.

Parameters
pmMapthe maps to search for the key
pccKeythe key to search in the maps
Returns
a pointer on the maps found or NULL if not found
ZOO_DLL_EXPORT map* getMapType ( map pmMap)

Access the map "type".

Parameters
pmMapthe map
Returns
a pointer on the map for mimeType/dataType/CRS if found, NULL in other case
ZOO_DLL_EXPORT service* getServiceFromRegistry ( registry prReg,
char *  pcLevel,
char *  pcName 
)

Access a service in the registry.

Parameters
prRegthe registry
pcLevelthe regitry to search ("concept", "generic" or "implementation")
pcNamethe service name
Returns
the service pointer if a corresponding service was found or NULL
ZOO_DLL_EXPORT bool hasElement ( elements peElem,
const char *  pccKey 
)

Verify if an elements contains a name equal to the given key.

Parameters
peElemthe elements to search for the key
pccKeythe elements name to search
Returns
true if the elements contains the name, false in other cases.
ZOO_DLL_EXPORT bool hasKey ( map pmMap,
const char *  pccKey 
)

Verify if a key exist in a map.

Parameters
pmMapthe map to search for the key
pccKeythe key to search in the map
Returns
true if the key wwas found, false in other case
ZOO_DLL_EXPORT bool hasvalue ( maps pmsSource,
const char *  pccNode,
const char *  pccKey,
map **  ppmKvp 
)

Verify that a particular map value exists in a maps data structure, and obtain that value.

Parameters
pmsSourcepointer to maps structure
pccNodename of maps node to search
pccKeyname of map node to find
ppmKvpaddress to the map* if it exists, otherwise NULL
Returns
true if map has a value or false if value is missing/NULL
Note
The map assigned to kvp is owned by the source maps
ZOO_DLL_EXPORT void inheritance ( registry prReg,
service **  psServ 
)

Apply inheritance to a service based on a registry.

Parameters
prRegthe registry storing profiles hierarchy
psServthe service to update depending on its inheritance
ZOO_DLL_EXPORT void inheritElements ( elements **  ppeOut,
elements peIn 
)

Apply inheritance to an out elements from a reference in elements.

Parameters
ppeOutthe elements to update
peInthe reference elements (containing inherited properties)
ZOO_DLL_EXPORT void inheritIOType ( iotype **  ppiotOut,
iotype piotIn 
)

Apply inheritance to an out iotype from a reference in iotype.

Parameters
ppiotOutthe iotype to update
piotInthe reference iotype (containing inherited properties)
ZOO_DLL_EXPORT void inheritMap ( map **  ppmOut,
map pmIn 
)

Apply inheritance to an out map from a reference in map.

Parameters
ppmOutthe map to update
pmInthe reference map (containing inherited properties)
ZOO_DLL_EXPORT void loadMapBinaries ( map **  ppmOut,
map pmIn 
)

Load binary values from a map (in) and add them to another map (out).

This function will take care of MapArray.

See also
loadMapBinary
Parameters
ppmOutthe map to add binaries values
pmInthe map containing the binary values to add ti out
ZOO_DLL_EXPORT void loadMapBinary ( map **  ppmOut,
map pmIn,
int  iPos 
)

Load binary values from a map (in) and add them to another map (out)

Parameters
pmOutthe map to add binaries values
pmInthe map containing the binary values to add ti out
iPosindex of the binary in an array (in case of "MapArray")
ZOO_DLL_EXPORT void mapsToCharXXX ( maps pmsMap,
char ***  pppcValues 
)

Convert a maps to a char*** (only used for Fortran support)

Parameters
pmsMapthe maps to convert
pppcValuesthe resulting array
ZOO_DLL_EXPORT bool nonempty ( map pmMap)

Verify that a map has a value.

Parameters
pmMappointer to map that should be checked
Returns
true if map has a value or false if value is missing/empty/NULL
ZOO_DLL_EXPORT void setElementsName ( elements **  ppeElem,
char *  pcName 
)

Set the name of an elements.

Parameters
peElemthe elements to modify
pcNamethe elements name
Returns
a pointer to the allocated elements
ZOO_DLL_EXPORT void setMapArray ( map pmMap,
const char *  pccKey,
int  iIndex,
const char *  pccValue 
)

Add a key value in a MapArray for a specific index.

Parameters
pmMapthe map to search for the key
pccKeythe key to search in the map
iIndexthe index of the MapArray
pccValuethe value to set in the MapArray
Returns
a pointer on the map found or NULL if not found
ZOO_DLL_EXPORT void setMapInMaps ( maps pmsMaps,
const char *  pccKey,
const char *  pccSubkey,
const char *  pccValue 
)

Set a key value pair to a map contained in a Maps.

Parameters
pmsMapsthe maps
pccKeythe maps name
pccSubkeythe map name included in the maps corresponding to key
pccValuethe corresponding value to add in the map
ZOO_DLL_EXPORT void setServiceName ( service **  ppsServ,
char *  pcName 
)

Set the name of a service.

Parameters
ppsServthe service
pcNamethe service name
static int zMkdir ( const char *  pccPath)
static

The crossplatform mkdir alias.

static int zSleep ( const long  millisecond)
static

The crossplatform sleep alias.

Variable Documentation

const char* const WPSExceptionCode[]
static
Initial value:
= {
"StatusOK",
"MissingParameterValue",
"InvalidParameterValue",
"NoApplicableCode",
"NotEnoughStorage",
"ServerBusy",
"FileSizeExceeded",
"StorageNotSupported",
"VersionNegotiationFailed",
"NoSuchProcess",
"NoSuchMode",
"NoSuchInput",
"NoSuchOutput",
"DataNotAccessible",
"SizeExceeded",
"TooManyInputs",
"TooManyOutputs",
"NoSuchFormat",
"WrongInputData",
"InternalServerError",
"NoSuchJob",
"ResultNotReady"
}
const char* const WPSExceptionText[]
static
Initial value:
= {
"No problem detected",
"Operation request does not include a parameter value, and this server did not declare a default value for that parameter.",
"Operation request contains an invalid parameter value.",
"No other exceptionCode specified by this service and server applies to this exception.",
"The server does not have enough space available to store the inputs and outputs associated with the request.",
"The server is too busy to accept and queue the request at this time.",
"The file size of one of the input parameters was too large for this process to handle.",
"Execute operation request included transmission=”reference” for one of the outputs, but storage is not offered by this server.",
"Service version for a ComplexData xlink:href input was not supported by the referenced server, and version negotiation failed.",
"One of the identifiers passed does not match with any of the processes offered by this server.",
"The process does not permit the desired execution mode.",
"One or more of the input identifiers passed does not match with any of the input identifiers of this process.",
"One or more of the output identifiers passed does not match with any of the input identifiers of this process.",
"One of the referenced input data sets was inaccessible.",
"The size of one of the input parameters was too large for this process to handle.",
"Too many input items have been specified.",
"Too many output items have been specified.",
"One or more of the input or output formats specified in the request did not match with any of the formats defined for that particular input or output.",
"One or more of inputs for which the service was able to retrieve the data but could not read it.",
"",
"The JobID from the request does not match any of the Jobs running on this server.",
"The result for the requested JobID has not yet been generated."
}