Loading...
Searching...
No Matches
globus_error_generic.h File Reference

Globus Error API. More...

`#include "globus_object.h"`
`#include "globus_module.h"`
`#include <stdarg.h>`

Go to the source code of this file.

## Macros

#define | GLOBUS_ERROR_TYPE_GLOBUS

## Typedefs

typedef char *(* | globus_error_print_friendly_t) (globus_object_t *error, const globus_object_type_t *type)

## Functions

globus_module_descriptor_t * | globus_error_get_source (globus_object_t *error)
void | globus_error_set_source (globus_object_t *error, globus_module_descriptor_t *source_module)
globus_object_t * | globus_error_get_cause (globus_object_t *error)
void | globus_error_set_cause (globus_object_t *error, globus_object_t *causal_error)
int | globus_error_get_type (globus_object_t *error)
void | globus_error_set_type (globus_object_t *error, const int type)
char * | globus_error_get_short_desc (globus_object_t *error)
void | globus_error_set_short_desc (globus_object_t *error, const char *short_desc_format,...)
char * | globus_error_get_long_desc (globus_object_t *error)
void | globus_error_set_long_desc (globus_object_t *error, const char *long_desc_format,...)
globus_bool_t | globus_error_match (globus_object_t *error, globus_module_descriptor_t *module, int type)
char * | globus_error_print_chain (globus_object_t *error)
char * | globus_error_print_friendly (globus_object_t *error)
globus_object_t * | globus_error_construct_multiple (globus_module_descriptor_t *base_source, int type, const char *fmt,...)
void | globus_error_mutliple_add_chain (globus_object_t *multiple_error, globus_object_t *chain, const char *fmt,...)
globus_object_t * | globus_error_multiple_remove_chain (globus_object_t *multiple_error)

## Detailed Description

Globus Error API.

## Typedef Documentation

## globus_error_print_friendly_t

typedef char *(* globus_error_print_friendly_t) (globus_object_t *error, const globus_object_type_t *type)

If registered with a module's descriptor, this handler will be called on behalf of globus_error_print_friendly()

Parameters

  error | The error chain that originated from this module. The top error object in the chain will be one created by this module and have a type of 'type'; The remaining objects are the same as the cause chain used at creation time. The user can use globus_error_get_type(error) to get the error code (for GLOBUS_ERROR_TYPE_GLOBUS objects)
  type | The error object type for the top object in the error chain (e.g. GLOBUS_ERROR_TYPE_GLOBUS, GLOBUS_ERROR_TYPE_ERRNO)

Returns
  The function should return a newly allocated string with a friendly error message explaining the error in more detail. This string should be considered the only message a user will see. If the module has nothing nice to say, it should return NULL so the next module in the error chain can be tried.

If you think a friendly error from causes beneath you should be included, you may use globus_error_print_friendly(globus_error_get_cause(error)) within this handler to append to your message.

## Function Documentation

## globus_error_construct_multiple()

globus_object_t * globus_error_construct_multiple | ( | globus_module_descriptor_t * | base_source,
|  | int | type,
|  | const char * | fmt,
|  |  | ... )

Multiple error type stuff Construct a container object for multiple error chains. Useful when an application tries many things (and each fails) before finally giving up;

Use globus_error_mutliple_add_chain() to add error objects/chains to this object.

Parameters

  base_source | Pointer to the originating module.
  type | The error type. We may reserve part of this namespace for common errors. Errors not in this space are assumed to be local to the originating module. globus_error_match() will match against this type, but not of the contained chains.
  fmt | a printf style format string describing the multiple errors

Returns
  The resulting error object. It is the user's responsibility to eventually free this object using globus_object_free(). A globus_result_t may be obtained by calling globus_error_put() on this object.

## globus_error_multiple_remove_chain()

globus_object_t * globus_error_multiple_remove_chain | ( | globus_object_t * | multiple_error | ) |

Remove an error chain from a multiple error object.

Parameters

  multiple_error | The error from which to remove a chain. Must have been created with globus_error_construct_multiple()

Returns
  The removed error chain, or NULL if none found.

## globus_error_mutliple_add_chain()

void globus_error_mutliple_add_chain | ( | globus_object_t * | multiple_error,
|  | globus_object_t * | chain,
|  | const char * | fmt,
|  |  | ... )

Add an error chain to a multiple error object.

Parameters

  multiple_error | The error to add the chain to. Must have been created with globus_error_construct_multiple()
  chain | The chain to add to this error. This error object assumes control over 'chain''s memory after this call.
  fmt | a printf style format string describing this chain

Returns
  void