You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
212 lines
6.3 KiB
212 lines
6.3 KiB
4 years ago
|
|
||
|
#ifndef SLP_ATTR_H_INCLUDED
|
||
|
#define SLP_ATTR_H_INCLUDED
|
||
|
|
||
|
#include "../common/slp_compare.h"
|
||
|
#include "../libslp/slp.h"
|
||
|
#include <stdio.h>
|
||
|
|
||
|
#define SLP_TAG_BAD 300
|
||
|
#define SLP_TAG_ERROR 400
|
||
|
|
||
|
/* The type for SLP attributes. An opaque type that acts as a handle to an
|
||
|
* attribute bundle.
|
||
|
*/
|
||
|
typedef void *SLPAttributes;
|
||
|
typedef void *SLPAttrIterator;
|
||
|
typedef void *SLPTemplate;
|
||
|
|
||
|
|
||
|
/* The callback for receiving attributes from a SLPFindAttrObj(). */
|
||
|
typedef SLPBoolean SLPAttrObjCallback(
|
||
|
SLPHandle hslp,
|
||
|
const SLPAttributes attr,
|
||
|
SLPError errcode,
|
||
|
void* cookie
|
||
|
);
|
||
|
|
||
|
/* A datatype to encapsulate opaque data.*/
|
||
|
typedef struct
|
||
|
{
|
||
|
int len;
|
||
|
char *data;
|
||
|
} SLPOpaque;
|
||
|
|
||
|
|
||
|
/*****************************************************************************
|
||
|
*
|
||
|
* Datatype to represent the types of known attributes.
|
||
|
*
|
||
|
****************************************************************************/
|
||
|
typedef int SLPType;
|
||
|
#define SLP_BOOLEAN ((SLPType)1)
|
||
|
#define SLP_INTEGER ((SLPType)2)
|
||
|
#define SLP_KEYWORD ((SLPType)4)
|
||
|
#define SLP_STRING ((SLPType)8)
|
||
|
#define SLP_OPAQUE ((SLPType)16)
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
/*****************************************************************************
|
||
|
*
|
||
|
* Datatype to represent modes of attribute modification.
|
||
|
*
|
||
|
****************************************************************************/
|
||
|
typedef enum
|
||
|
{
|
||
|
SLP_ADD = 1, /* Appends to the attribute list.*/
|
||
|
SLP_REPLACE = 2 /* Replaces attribute. */
|
||
|
} SLPInsertionPolicy;
|
||
|
|
||
|
|
||
|
/*****************************************************************************
|
||
|
*
|
||
|
* Functions for the attribute struct. One could almost call them methods.
|
||
|
*
|
||
|
****************************************************************************/
|
||
|
|
||
|
SLPError SLPAttrAlloc(
|
||
|
const char *lang,
|
||
|
const FILE *template_h,
|
||
|
const SLPBoolean strict,
|
||
|
SLPAttributes *slp_attr
|
||
|
);
|
||
|
|
||
|
SLPError SLPAttrAllocStr(
|
||
|
const char *lang,
|
||
|
const FILE *template_h,
|
||
|
const SLPBoolean strict,
|
||
|
SLPAttributes *slp_attr,
|
||
|
const char *str
|
||
|
);
|
||
|
|
||
|
void SLPAttrFree(SLPAttributes attr_h);
|
||
|
|
||
|
/* Attribute manipulation. */
|
||
|
SLPError SLPAttrSet_bool(
|
||
|
SLPAttributes attr_h,
|
||
|
const char *attribute_tag,
|
||
|
SLPBoolean val
|
||
|
);
|
||
|
|
||
|
SLPError SLPAttrSet_str(
|
||
|
SLPAttributes attr_h,
|
||
|
const char *tag,
|
||
|
const char *val,
|
||
|
SLPInsertionPolicy
|
||
|
);
|
||
|
|
||
|
SLPError SLPAttrSet_keyw(
|
||
|
SLPAttributes attr_h,
|
||
|
const char *attribute_tag
|
||
|
);
|
||
|
|
||
|
SLPError SLPAttrSet_int(
|
||
|
SLPAttributes attr_h,
|
||
|
const char *tag,
|
||
|
int val,
|
||
|
SLPInsertionPolicy policy
|
||
|
);
|
||
|
|
||
|
SLPError SLPAttrSet_opaque(
|
||
|
SLPAttributes attr_h,
|
||
|
const char *tag,
|
||
|
const char *val,
|
||
|
const unsigned int len,
|
||
|
SLPInsertionPolicy policy
|
||
|
);
|
||
|
|
||
|
SLPError SLPAttrSet_guess(
|
||
|
SLPAttributes attr_h,
|
||
|
const char *tag,
|
||
|
const char *val,
|
||
|
SLPInsertionPolicy policy
|
||
|
);
|
||
|
|
||
|
|
||
|
/* Attribute Querying. */
|
||
|
SLPError SLPAttrGet_bool(
|
||
|
SLPAttributes attr_h,
|
||
|
const char *tag,
|
||
|
SLPBoolean *val
|
||
|
);
|
||
|
|
||
|
SLPError SLPAttrGet_keyw(
|
||
|
SLPAttributes attr_h,
|
||
|
const char *tag
|
||
|
);
|
||
|
|
||
|
SLPError SLPAttrGet_int(
|
||
|
SLPAttributes attr_h,
|
||
|
const char *tag,
|
||
|
int *val[],
|
||
|
int *size
|
||
|
);
|
||
|
|
||
|
SLPError SLPAttrGet_str(
|
||
|
SLPAttributes attr_h,
|
||
|
const char *tag,
|
||
|
char ***val,
|
||
|
int *size
|
||
|
);
|
||
|
|
||
|
|
||
|
SLPError SLPAttrGet_opaque(
|
||
|
SLPAttributes attr_h,
|
||
|
const char *tag,
|
||
|
SLPOpaque ***val,
|
||
|
int *size
|
||
|
);
|
||
|
|
||
|
|
||
|
/* Misc. */
|
||
|
SLPError SLPAttrGetType(SLPAttributes attr_h, const char *tag, SLPType *type);
|
||
|
|
||
|
SLPError SLPAttrSerialize(SLPAttributes attr_h,
|
||
|
const char* tags /* NULL terminated */,
|
||
|
char **buffer,
|
||
|
int bufferlen, /* Size of buffer. */
|
||
|
int* count, /* Bytes needed/written. */
|
||
|
SLPBoolean find_delta
|
||
|
);
|
||
|
|
||
|
SLPError SLPAttrFreshen(SLPAttributes attr_h, const char *new_attrs);
|
||
|
|
||
|
/* Functions. */
|
||
|
SLPError SLPRegAttr(
|
||
|
SLPHandle slp_h,
|
||
|
const char* srvurl,
|
||
|
unsigned short lifetime,
|
||
|
const char* srvtype,
|
||
|
SLPAttributes attr_h,
|
||
|
SLPBoolean fresh,
|
||
|
SLPRegReport callback,
|
||
|
void* cookie
|
||
|
);
|
||
|
|
||
|
SLPError SLPFindAttrObj (
|
||
|
SLPHandle hslp,
|
||
|
const char* srvurlorsrvtype,
|
||
|
const char* scopelist,
|
||
|
const char* attrids,
|
||
|
SLPAttrObjCallback *callback,
|
||
|
void* cookie
|
||
|
);
|
||
|
|
||
|
|
||
|
|
||
|
/*****************************************************************************
|
||
|
*
|
||
|
* Functions for the iterator struct
|
||
|
*
|
||
|
****************************************************************************/
|
||
|
|
||
|
SLPError SLPAttrIteratorAlloc(SLPAttributes attr, SLPAttrIterator *iter);
|
||
|
void SLPAttrIteratorFree(SLPAttrIterator iter);
|
||
|
|
||
|
SLPBoolean SLPAttrIterNext(SLPAttrIterator iter_h, char const **tag, SLPType *type);
|
||
|
|
||
|
|
||
|
#endif
|