(file) Return to drms_api.txt CVS log (file) (dir) Up to [Development] / JSOC / CM / V1.0

  1 arta  1.1 =================== DRMS data types and structures ==================
  2           
  3           For full definitions see jsoc/src/base/libdrms/drms_types.h
  4           
  5           Main DRMS types visible to a module:
  6           
  7            DRMS_Type_t      : Basic scalar and string type enumerator.
  8            DRMS_Type_Value_t: Basic scalar and string values.
  9           
 10            DRMS_Record_t    : A single data record.
 11            DRMS_Keyword_t   : A record keyword (meta-data, headers)
 12            DRMS_Link_t      : A record link (links to other records)
 13            DRMS_Segment_t   : A record data segment holding bulk data of the record
 14            DRMS_Array_t     : A generic array of scalar values or strings. Used to
 15                               access the contents of a segment.
 16            DRMS_RecordSet_t : A set of data records.
 17           
 18           
 19           DMRS types used internally:
 20           
 21            DRMS_Env_t       : The main DRMS environment. Contains information about the
 22 arta  1.1                     DRMS session as well as caches of records, storage units
 23                               and series template records. In the DRMS server it 
 24                               contains mutexes (locks), signal masks and other data 
 25                               structures synchronize the server threads and allowing 
 26                               them to communicate.                    
 27            DRMS_Session_t   : A DRMS session handle. Holds information about the 
 28                               connection to a DRMS server.
 29            DRMS_ThreadInfo_t: Information passed to a thread in the DRMS server when 
 30                               it is spawned to service a new client.
 31            DRMS_SumRequest_t: Structure used to pass requests regarding storage units to
 32                               the designated SUMS communications thread in the server.
 33           
 34           
 35           ============ Record and RecordSet functions ===============
 36           
 37           For full definitions see jsoc/src/base/libdrms/drms_record.{c,h}.
 38           
 39           /* drms_open_records: Retrieve a recordset specified by the DRMS
 40              dataset name string given in the argument "datasetname". The
 41              records are inserted into the record cache and marked read-only. */
 42           DRMS_RecordSet_t *drms_open_records(DRMS_Env_t *env, char *recordsetname, 
 43 arta  1.1 int *status);
 44           
 45           /* drms_clone_records: Clone a set of records, i.e. create a new set
 46              of records and copy the value of keywords, links and segments from
 47              the pre-existing records given in "rs".  If
 48              mode=DRMS_SHARE_SEGMENTS the new segments will share segment files
 49              with the old records, i.e. it will have the same storage unit
 50              number, and only keyword and link data will be replicated.  If
 51              mode=DRMS_COPY_SEGMENTS the segment files for the old records will
 52              be copied to a new storage unit slots and assigned to the new
 53              records. */
 54           DRMS_RecordSet_t *drms_clone_records(DRMS_RecordSet_t *recset, int mode, 
 55           				     int *status);
 56           
 57           /* drms_create_records: Create a new set of n records. Fill keywords,
 58              links and segments with their default values from the series
 59              definition. Each record will be assigned a new storage unit slot to
 60              store its segment files in. */
 61           DRMS_RecordSet_t *drms_create_records(DRMS_Env_t *env, int n, char *seriesname,
 62           				      int *status);
 63           
 64 arta  1.1 /* drms_close_records: Close a set of records. 
 65              1. a) If action=DRMS_COMMIT_RECORD the record meta-data (keywords
 66                 and links) will be inserted into the database and the data
 67                 segments will be left in the storage unit directory for later
 68                 archiving by SUMS. NOTICE: The records will only be comitted 
 69                 permanently to the database if the session finishes without
 70                 error.
 71                 b) If action=DRMS_DISCARD_RECORD the data segment files are
 72                 deleted from disk.
 73              2. The record structures are freed from the record cache. */
 74           int drms_close_records(DRMS_RecordSet_t *rs, int action);
 75           
 76           /* drms_closeall_records: Execute drms_close_record for all records in
 77              the record cache that are not marked read-only, i.e. which were
 78              created by the present program. */
 79           int drms_closeall_records(DRMS_Env_t *env, int action);
 80           
 81           /* drms_record_print: Print the contents of a record data structure to
 82              stdout. */
 83           void  drms_record_print(DRMS_Record_t *rec);
 84           
 85 arta  1.1 /* Calculate size of a record and its segment arrays in bytes. */
 86           long long drms_record_size(DRMS_Record_t *rec);
 87           
 88           
 89           /* Single record versions: */
 90           DRMS_Record_t *drms_clone_record(DRMS_Record_t *record, int mode, int *status);
 91           DRMS_Record_t *drms_create_record(DRMS_Env_t *env, char *seriesname, 
 92           				  int *status);
 93           int drms_close_record(DRMS_Record_t *rec, int action);
 94           
 95           
 96           
 97           ======================== Keyword functions ========================
 98           
 99           For full definitions see jsoc/src/base/libdrms/drms_keyword.{c,h}.
100           
101           /* Versions with type conversion. */
102           char drms_getkey_char(DRMS_Record_t *rec, const char *key,int *status);
103           short drms_getkey_short(DRMS_Record_t *rec, const char *key, int *status);
104           int drms_getkey_int(DRMS_Record_t *rec, const char *key, int *status);
105           long long drms_getkey_longlong(DRMS_Record_t *rec, const char *key, int *status);
106 arta  1.1 float drms_getkey_float(DRMS_Record_t *rec, const char *key, int *status);
107           double drms_getkey_double(DRMS_Record_t *rec, const char *key, int *status);
108           char *drms_getkey_string(DRMS_Record_t *rec, const char *key, int *status);
109           
110           /* Generic version. */
111           DRMS_Type_Value_t drms_getkey(DRMS_Record_t *rec, const char *key, 
112           				DRMS_Type_t *type, int *status);
113           
114           /* Versions with type conversion. */
115           int drms_setkey_char(DRMS_Record_t *rec, const char *key, char value);
116           int drms_setkey_short(DRMS_Record_t *rec, const char *key, short value);
117           int drms_setkey_int(DRMS_Record_t *rec, const char *key, int value);
118           int drms_setkey_longlong(DRMS_Record_t *rec, const char *key, long long value);
119           int drms_setkey_float(DRMS_Record_t *rec, const char *key, float value);
120           int drms_setkey_double(DRMS_Record_t *rec, const char *key, double value);
121           int drms_setkey_string(DRMS_Record_t *rec, const char *key, char *value);
122           
123           /* Generic version. */
124           int drms_setkey(DRMS_Record_t *rec, const char *key, DRMS_Type_t type, 
125           		DRMS_Type_Value_t *value);
126           
127 arta  1.1 === Utility keyword functions: ===
128           /* drms_keyword_print: Print all fields of the DRMS_Keyword_t struct 
129              to stdout. */
130           void drms_keyword_print(DRMS_Keyword_t *key);
131           /* drms_keyword_printval: print formatted keyword value to stdout. */
132           void drms_keyword_printval(DRMS_Keyword_t *key);
133           DRMS_Keyword_t *drms_keyword_lookup(DRMS_Record_t *rec, const char *key);
134           
135           
136           ======================== Link functions ========================
137           
138           For full definitions see jsoc/src/base/libdrms/drms_link.{c,h}.
139           
140           /* Set a static link to point to the record with absolute 
141              record number "recnum" in the target series of link "linkname"
142              associated with record "rec". */
143           int drms_setlink_static(DRMS_Record_t *rec, const char *linkname, int recnum);
144           
145           /* Set a dynamic link to point to the record(s) with primary index values
146              mathing those given in the "types" and "values" arrays. When a dynamic
147              link is resolved the record with the highest record number of the ones
148 arta  1.1    matching the primary index is selected. */
149           int drms_setlink_dynamic(DRMS_Record_t *rec, const char *linkname, 
150           			 DRMS_Type_t *types, DRMS_Type_Value_t *values);
151           
152           /* Follow a link to its destination record, retrieve it and return a 
153              pointer to it. */
154           DRMS_Record_t *drms_link_follow(DRMS_Record_t *rec, const char *linkname, 
155           				int *status);
156           
157           === Utility Link functions: ===
158           /* Print the contents of a link structure to stdout. */
159           void drms_link_print(DRMS_Link_t *link);
160           
161           
162           ======================== Segment functions ========================
163           
164           For full definitions see jsoc/src/base/libdrms/drms_segment.{c,h}.
165           
166           Storage protocols currently supported: 
167              DRMS_BINARY: Raw binary format
168              DRMS_BINZIP: GZIP compressed raw binary format.
169 arta  1.1 
170           /* drms_segment_readraw: Read the data coresponding to the segment
171              argument from file.  the data values will be read into an array of
172              the same type that the segment values are stored on disk and no
173              scaling will be done. */
174           DRMS_Array_t *drms_segment_readraw(DRMS_Segment_t *seg, int *status);
175           
176           /* drms_segment_writeraw: Write the array argument to the (partial)
177              file occupied by the segment argument. The array dimension and type
178              must match the segment type and dimension. */
179           int drms_segment_writeraw(DRMS_Segment_t *seg, DRMS_Array_t *arr);
180           
181           === Utility Segment functions: ===
182           /* Print the fields of a keyword struct to stdout. */
183           void drms_segment_print(DRMS_Segment_t *seg)
184           /* Calculate segment size in bytes. */
185           long long drms_segment_size(DRMS_Segment_t *seg)
186           /* Look up a segment structure by name and return a pointer to it. */
187           DRMS_Segment_t *drms_segment_lookup(DRMS_Record_t *rec, const char *segname)
188           

Karen Tian
Powered by
ViewCVS 0.9.4