DRMS_LINK(3) DRMS Programmer's Manual DRMS_LINK(3) NAME drms_link - DRMS link data structures SYNOPSIS #include typedef struct DRMS_Link_struct { DRMS_Record_t *record; /* Parent record. */ DRMS_LinkInfo_t *info; /* Series-wide link info. */ /*** Static link info ***/ long long recnum; /* Record number of the target record. */ /*** Dynamic link info ***/ /* Primary index values of target record(s): */ DRMS_Type_Value_t pidx_value[DRMS_MAXPRIMIDX]; } DRMS_Link_t; typedef enum { STATIC_LINK, DYNAMIC_LINK } DRMS_Link_Type_t; /* Series-wide link info that does not vary from record to record. */ typedef struct DRMS_LinkInfo_struct { char name[DRMS_MAXNAMELEN]; /* Link name. */ char target_series[DRMS_MAXNAMELEN]; /* Series pointed to. */ char description[DRMS_MAXCOMMENTLEN]; DRMS_Link_Type_t type; /* Static or dynamic. */ /*** Dynamic link info ***/ /* Number of keywords in primary index of target series: */ int pidx_num; /* Type of primary index keywords.*/ DRMS_Type_t pidx_type[DRMS_MAXPRIMIDX]; /* Names of primary index keywords.*/ char *pidx_name[DRMS_MAXPRIMIDX]; } DRMS_LinkInfo_t; DESCRIPTION FUNCTIONS Resolving link DRMS_Record_t *drms_link_follow(DRMS_Record_t *rec, const char *linkname, int *status); DRMS_RecordSet_t *drms_link_followall(DRMS_Record_t *rec, const char *linkname, int *status); Pretty print void drms_link_print(DRMS_Link_t *link); Establishing link int drms_setlink_static(DRMS_Record_t *rec, const char *linkname, long long recnum); int drms_setlink_dynamic(DRMS_Record_t *rec, const char *linkname, DRMS_Type_t *types, DRMS_Type_Value_t *values); SEE ALSO drms_record(3), drms_keyword(3), drms_segment(3), drms_array(3) DRMS MANPAGE 2006-05-19 DRMS_LINK(3)