Spell fixes.
[yaz-moved-to-github.git] / doc / asn.xml
1 <!-- $Id: asn.xml,v 1.7 2001-08-13 09:42:54 adam Exp $ -->
2  <chapter><title>The ASN Module</title>
3   <sect1><title>Introduction</title>
4    <para>
5     The &asn; module provides you with a set of C struct definitions for the
6     various PDUs of the protocol, as well as for the complex types
7     appearing within the PDUs. For the primitive data types, the C
8     representation often takes the form of an ordinary C language type,
9     such as <literal>int</literal>. For ASN.1 constructs that have no direct
10     representation in C, such as general octet strings and bit strings,
11     the &odr; module (see section <link linkend="odr">The ODR Module</link>)
12     provides auxiliary definitions.
13    </para>
14   </sect1>
15   <sect1><title>Preparing PDUs</title>
16    
17    <para>
18     A structure representing a complex ASN.1 type doesn't in itself contain the
19     members of that type. Instead, the structure contains
20     <emphasis>pointers</emphasis> to the members of the type.
21     This is necessary, in part, to allow a mechanism for specifying which
22     of the optional structure (SEQUENCE) members are present, and which
23     are not. It follows that you will need to somehow provide space for
24     the individual members of the structure, and set the pointers to
25     refer to the members.
26    </para>
27    <para>
28     The conversion routines don't care how you allocate and maintain your
29     C structures - they just follow the pointers that you provide.
30     Depending on the complexity of your application, and your personal
31     taste, there are at least three different approaches that you may take
32     when you allocate the structures.
33    </para>
34    
35    <para>
36     You can use static or automatic local variables in the function that
37     prepares the PDU. This is a simple approach, and it provides the most
38     efficient form of memory management. While it works well for flat
39     PDUs like the InitReqest, it will generally not be sufficient for say,
40     the generation of an arbitrarily complex RPN query structure.
41    </para>
42    <para>
43     You can individually create the structure and its members using the
44     <function>malloc(2)</function> function. If you want to ensure that
45     the data is freed when it is no longer needed, you will have to
46     define a function that individually releases each member of a
47     structure before freeing the structure itself.
48    </para>
49    <para>
50     You can use the <function>odr_malloc()</function> function (see section 
51     <link linkend="odr-use">Using ODR</link> for details). When you use
52     <function>odr_malloc()</function>, you can release all of the
53     allocated data in a single operation, independent of any pointers and
54     relations between the data. <function>odr_malloc()</function> is based on a
55     &quot;nibble-memory&quot;
56     scheme, in which large portions of memory are allocated, and then
57     gradually handed out with each call to <function>odr_malloc()</function>.
58     The next time you call <function>odr_reset()</function>, all of the
59     memory allocated since the last call is recycled for future use (actually,
60     it is placed on a free-list).
61    </para>
62    <para>
63     You can combine all of the methods described here. This will often be
64     the most practical approach. For instance, you might use
65     <function>odr_malloc()</function> to allocate an entire structure and
66     some of its elements, while you leave other elements pointing to global
67     or per-session default variables.
68    </para>
69    
70    <para>
71     The &asn; module provides an important aid in creating new PDUs. For
72     each of the PDU types (say, <function>Z_InitRequest</function>), a
73     function is provided that allocates and initializes an instance of
74     that PDU type for you. In the case of the InitRequest, the function is
75     simply named <function>zget_InitRequest()</function>, and it sets up
76     reasonable default value for all of the mandatory members. The optional
77     members are generally initialized to null pointers. This last aspect
78     is very important: it ensures that if the PDU definitions are
79     extended after you finish your implementation (to accommodate
80     new versions of the protocol, say), you won't get into trouble with
81     uninitialized pointers in your structures. The functions use
82     <function>odr_malloc()</function> to
83     allocate the PDUs and its members, so you can free everything again with a
84     single call to <function>odr_reset()</function>. We strongly recommend
85     that you use the <literal>zget_*</literal>
86     functions whenever you are preparing a PDU (in a C++ API, the
87     <literal>zget_</literal>
88     functions would probably be promoted to constructors for the
89     individual types).
90    </para>
91    <para>
92    The prototype for the individual PDU types generally look like this:
93    </para>
94    <synopsis>
95     Z_&lt;type> *zget_&lt;type>(ODR o);
96    </synopsis>
97    
98    <para>
99     eg.:
100    </para>
101    
102    <synopsis>
103     Z_InitRequest *zget_InitRequest(ODR o);
104    </synopsis>
105
106    <para>
107    The &odr; handle should generally be your encoding stream, but it
108     needn't be.
109    </para>
110    <para>
111    As well as the individual PDU functions, a function
112     <function>zget_APDU()</function> is provided, which allocates
113     a top-level Z-APDU of the type requested:
114    </para>
115    
116    <synopsis>
117     Z_APDU *zget_APDU(ODR o, int which);
118    </synopsis>
119    
120    <para>
121     The <varname>which</varname> parameter is (of course) the discriminator
122     belonging to the <varname>Z_APDU</varname> <literal>CHOICE</literal> type.
123     All of the interface described here is provided by the &asn; module, and
124     you access it through the <filename>proto.h</filename> header file.
125     
126    </para>
127   </sect1>
128   <sect1><title id="oid">Object Identifiers</title>
129   <para>
130     When you refer to object identifiers in your application, you need to
131     be aware that SR and Z39.50 use two different set of OIDs to refer to
132     the same objects. To handle this easily, &yaz; provides a utility module
133     to &asn; which provides an internal representation of the OIDs used in
134     both protocols. Each oid is described by a structure:
135    </para>
136    
137    <screen>
138 typedef struct oident
139 {
140     enum oid_proto proto;
141     enum oid_class class;
142     enum oid_value value;
143     int oidsuffix[OID_SIZE];
144     char *desc;
145 } oident;
146    </screen>
147    
148    <para>
149     The <literal>proto</literal> field can be set to either
150     <literal>PROTO_SR</literal> or <literal>PROTO_Z3950</literal>.
151     The <literal>class</literal> might be, say,
152     <literal>CLASS_RECSYN</literal>, and the <literal>value</literal> might be
153     <literal>VAL_USMARC</literal> for the USMARC record format. Functions
154    </para>
155    
156    <screen>
157 int *oid_ent_to_oid(struct oident *ent, int *dst);
158 struct oident *oid_getentbyoid(int *o);
159    </screen>
160    
161    <para>
162     are provided to map between object identifiers and database entries.
163     If you store a member of the <literal>oid_proto</literal> type in
164     your association state information, it's a simple matter, at runtime,
165     to generate the correct OID when you need it. For decoding, you can
166     simply ignore the proto field, or if you're strict, you can verify
167     that your peer is using the OID family from the correct protocol.
168     The <literal>desc</literal> field is a short, human-readable name
169     for the PDU, useful mainly for diagnostic output.
170    </para>
171    
172    <note>
173     <para>
174      The old function <function>oid_getoidbyent</function> still exists but
175      is not thread safe. Use <function>oid_ent_to_oid</function> instead
176      and pass an array of size <literal>OID_SIZE</literal>.
177     </para>
178    </note>
179    
180    <note>
181     <para>
182      Plans are underway to merge the two protocols into a single
183      definition, with one set of object identifiers. When this happens, the
184      oid module will no longer be required to support protocol
185      independence, but it should still be useful as a simple OID database.
186     </para>
187    </note>
188   
189   </sect1>
190   <sect1><title>EXTERNAL Data</title>
191    
192    <para>
193     In order to achieve extensibility and adaptability to different
194     application domains, the new version of the protocol defines many
195     structures outside of the main ASN.1 specification, referencing them
196     through ASN.1 EXTERNAL constructs. To simplify the construction and
197     access to the externally referenced data, the &asn; module defines a
198     specialized version of the EXTERNAL construct, called
199     <literal>Z_External</literal>.It is defined thus:
200    </para>
201    
202    <screen>
203 typedef struct Z_External
204 {
205     Odr_oid *direct_reference;
206     int *indirect_reference;
207     char *descriptor;
208     enum
209     {
210         /* Generic types */
211         Z_External_single = 0,
212         Z_External_octet,
213         Z_External_arbitrary,
214
215         /* Specific types */
216         Z_External_SUTRS,
217         Z_External_explainRecord,
218         Z_External_resourceReport1,
219         Z_External_resourceReport2
220
221     ...
222
223     } which;
224     union
225     {
226         /* Generic types */
227         Odr_any *single_ASN1_type;
228         Odr_oct *octet_aligned;
229         Odr_bitmask *arbitrary;
230
231         /* Specific types */
232         Z_SUTRS *sutrs;
233         Z_ExplainRecord *explainRecord;
234         Z_ResourceReport1 *resourceReport1;
235         Z_ResourceReport2 *resourceReport2;
236
237         ...
238
239     } u;
240 } Z_External;
241    </screen>
242    
243    <para>
244     When decoding, the &asn; module will attempt to determine which
245     syntax describes the data by looking at the reference fields
246     (currently only the direct-reference). For ASN.1 structured data, you
247     need only consult the <literal>which</literal> field to determine the
248     type of data. You can the access  the data directly through the union.
249     When constructing data for encoding, you set the union pointer to point
250     to the data, and set the <literal>which</literal> field accordingly.
251     Remember also to set the direct (or indirect) reference to the correct
252     OID for the data type.
253     For non-ASN.1 data such as MARC records, use the
254     <literal>octet_aligned</literal> arm of the union.
255    </para>
256    
257    <para>
258     Some servers return ASN.1 structured data values (eg. database
259     records) as BER-encoded records placed in the
260     <literal>octet-aligned</literal> branch of the EXTERNAL CHOICE.
261     The ASN-module will <emphasis>not</emphasis> automatically decode
262     these records. To help you decode the records in the application, the
263     function
264    </para>
265    
266    <screen>
267    Z_ext_typeent *z_ext_gettypebyref(oid_value ref);
268    </screen>
269
270    <para>
271     Can be used to retrieve information about the known, external data
272     types. The function return a pointer to a static area, or NULL, if no
273     match for the given direct reference is found. The
274     <literal>Z_ext_typeent</literal>
275     is defined as:
276    </para>
277   
278    <screen>
279 typedef struct Z_ext_typeent
280 {
281     oid_value dref;    /* the direct-reference OID value. */
282     int what;          /* discriminator value for the external CHOICE */
283     Odr_fun fun;       /* decoder function */
284 } Z_ext_typeent;
285    </screen>
286    
287    <para>
288     The <literal>what</literal> member contains the
289     <literal>Z_External</literal> union discriminator value for the
290     given type: For the SUTRS record syntax, the value would be
291     <literal>Z_External_sutrs</literal>.
292     The <literal>fun</literal> member contains a pointer to the
293     function which encodes/decodes the given type. Again, for the SUTRS
294     record syntax, the value of <literal>fun</literal> would be
295     <literal>z_SUTRS</literal> (a function pointer).
296    </para>
297    
298    <para>
299     If you receive an EXTERNAL which contains an octet-string value that
300     you suspect of being an ASN.1-structured data value, you can use
301     <literal>z_ext_gettypebyref</literal> to look for the provided
302     direct-reference.
303     If the return value is different from NULL, you can use the provided
304     function to decode the BER string (see section <link linkend="odr-use">
305      Using ODR</link>).
306    </para>
307    
308    <para>
309     If you want to <emphasis>send</emphasis> EXTERNALs containing
310     ASN.1-structured values in the occtet-aligned branch of the CHOICE, this
311     is possible too. However, on the encoding phase, it requires a somewhat
312     involved juggling around of the various buffers involved.
313    </para>
314    <para>
315     If you need to add new, externally defined data types, you must update
316     the struct above, in the source file <filename>prt-ext.h</filename>, as
317     well as the encoder/decoder in the file <filename>prt-ext.c</filename>.
318     When changing the latter, remember to update both the
319     <literal>arm</literal> arrary and the list
320     <literal>type_table</literal>, which drives the CHOICE biasing that
321     is necessary to tell the different, structured types apart
322     on decoding.
323    </para>
324    
325    <note>
326     <para>
327      Eventually, the EXTERNAL processing will most likely
328      automatically insert the correct OIDs or indirect-refs. First,
329      however, we need to determine how application-context management
330      (specifically the presentation-context-list) should fit into the
331      various modules.
332     </para>
333    </note>
334   
335   </sect1>
336   <sect1><title>PDU Contents Table</title>
337    
338   <para>
339     We include, for reference, a listing of the fields of each top-level
340     PDU, as well as their default settings.
341    </para>
342    
343    <table frame="top"><title>Default settings for PDU Initialize Request</title>
344     <tgroup cols="3">
345      <colspec colname="field"></colspec>
346      <colspec colname="type"></colspec>
347     <colspec colname="value"></colspec>
348     <thead>
349      <row>
350       <entry>Field</entry>
351       <entry>Type</entry>
352       <entry>Default Value</entry>
353      </row>
354     </thead>
355     <tbody>
356      <row><entry>
357        referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
358       </entry></row>
359      <row><entry>
360        protocolVersion</entry><entry>Odr_bitmask</entry><entry>Empty bitmask
361       </entry></row>
362      <row><entry>
363        options</entry><entry>Odr_bitmask</entry><entry>Empty bitmask
364       </entry></row>
365      <row><entry>
366        preferredMessageSize</entry><entry>int</entry><entry>30*1024
367       </entry></row>
368      <row><entry>
369        maximumRecordSize</entry><entry>int</entry><entry>30*1024
370       </entry></row>
371      <row><entry>
372        idAuthentication</entry><entry>Z_IdAuthentication</entry><entry>NULL
373       </entry></row>
374      <row><entry>
375        implementationId</entry><entry>char*</entry><entry>"YAZ (id=81)"
376       </entry></row>
377      <row><entry>
378        implementationName</entry><entry>char*</entry><entry>"Index Data/YAZ"
379       </entry></row>
380      <row><entry>
381        implementationVersion</entry><entry>char*</entry><entry>YAZ_VERSION
382       </entry></row>
383      <row><entry>
384        userInformationField</entry><entry>Z_UserInformation</entry><entry>NULL
385       </entry></row>
386      <row><entry>
387        otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
388       </entry></row>
389     </tbody>
390    </tgroup>
391   </table>
392
393   <table frame="top"><title>Default settings for PDU Initialize
394     Response</title>
395    <tgroup cols="3">
396     <colspec colname="field"></colspec>
397     <colspec colname="type"></colspec>
398     <colspec colname="value"></colspec>
399     <thead>
400       <row>
401        <entry>Field</entry>
402        <entry>Type</entry>
403        <entry>Default Value</entry>
404       </row>
405      </thead>
406      <tbody>
407       <row><entry>
408         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
409        </entry></row>
410       <row><entry>
411         protocolVersion</entry><entry>Odr_bitmask</entry><entry>Empty bitmask
412        </entry></row>
413       <row><entry>
414         options</entry><entry>Odr_bitmask</entry><entry>Empty bitmask
415        </entry></row>
416       <row><entry>
417         preferredMessageSize</entry><entry>int</entry><entry>30*1024
418        </entry></row>
419       <row><entry>
420         maximumRecordSize</entry><entry>int</entry><entry>30*1024
421        </entry></row>
422       <row><entry>
423         result</entry><entry>bool_t</entry><entry>TRUE
424        </entry></row>
425       <row><entry>
426         implementationId</entry><entry>char*</entry><entry>"YAZ (id=81)"
427        </entry></row>
428       <row><entry>
429         implementationName</entry><entry>char*</entry><entry>"Index Data/YAZ"
430        </entry></row>
431       <row><entry>
432         implementationVersion</entry><entry>char*</entry><entry>YAZ_VERSION
433        </entry></row>
434       <row><entry>
435         userInformationField</entry><entry>Z_UserInformation</entry><entry>NULL
436        </entry></row>
437       <row><entry>
438         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
439        </entry></row>
440      </tbody>
441     </tgroup>
442    </table>
443
444    <table frame="top"><title>Default settings for PDU Search Request</title>
445     <tgroup cols="3">
446      <colspec colname="field"></colspec>
447      <colspec colname="type"></colspec>
448      <colspec colname="value"></colspec>
449      <thead>
450       <row>
451        <entry>Field</entry>
452        <entry>Type</entry>
453        <entry>Default Value</entry>
454       </row>
455      </thead>
456      <tbody>
457       <row><entry>
458         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
459        </entry></row>
460       <row><entry>
461         smallSetUpperBound</entry><entry>int</entry><entry>0
462        </entry></row>
463       <row><entry>
464         largeSetLowerBound</entry><entry>int</entry><entry>1
465        </entry></row>
466       <row><entry>
467         mediumSetPresentNumber</entry><entry>int</entry><entry>0
468        </entry></row>
469       <row><entry>
470         replaceIndicator</entry><entry>bool_t</entry><entry>TRUE
471        </entry></row>
472       <row><entry>
473         resultSetName</entry><entry>char *</entry><entry>"default"
474        </entry></row>
475       <row><entry>
476         num_databaseNames</entry><entry>int</entry><entry>0
477        </entry></row>
478       <row><entry>
479         databaseNames</entry><entry>char **</entry><entry>NULL
480        </entry></row>
481       <row><entry>
482         smallSetElementSetNames</entry><entry>Z_ElementSetNames
483        </entry><entry>NULL
484        </entry></row>
485       <row><entry>
486         mediumSetElementSetNames</entry><entry>Z_ElementSetNames
487        </entry><entry>NULL
488        </entry></row>
489       <row><entry>
490         preferredRecordSyntax</entry><entry>Odr_oid</entry><entry>NULL
491        </entry></row>
492       <row><entry>
493         query</entry><entry>Z_Query</entry><entry>NULL
494        </entry></row>
495       <row><entry>
496         additionalSearchInfo</entry><entry>Z_OtherInformation
497        </entry><entry>NULL
498        </entry></row>
499       <row><entry>
500         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
501        </entry></row>
502      </tbody>
503     </tgroup>
504    </table>
505
506    <table frame="top"><title>Default settings for PDU Search Response</title>
507     <tgroup cols="3">
508      <colspec colname="field"></colspec>
509      <colspec colname="type"></colspec>
510      <colspec colname="value"></colspec>
511      <thead>
512       <row>
513        <entry>Field</entry>
514        <entry>Type</entry>
515        <entry>Default Value</entry>
516       </row>
517      </thead>
518      <tbody>
519       
520       <row><entry>
521         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
522        </entry></row>
523       <row><entry>
524         resultCount</entry><entry>int</entry><entry>0
525        </entry></row>
526       <row><entry>
527         numberOfRecordsReturned</entry><entry>int</entry><entry>0
528        </entry></row>
529       <row><entry>
530         nextResultSetPosition</entry><entry>int</entry><entry>0
531        </entry></row>
532       <row><entry>
533         searchStatus</entry><entry>bool_t</entry><entry>TRUE
534        </entry></row>
535       <row><entry>
536         resultSetStatus</entry><entry>int</entry><entry>NULL
537        </entry></row>
538       <row><entry>
539         presentStatus</entry><entry>int</entry><entry>NULL
540        </entry></row>
541       <row><entry>
542         records</entry><entry>Z_Records</entry><entry>NULL
543        </entry></row>
544       <row><entry>
545         additionalSearchInfo</entry>
546        <entry>Z_OtherInformation</entry><entry>NULL
547        </entry></row>
548       <row><entry>
549         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
550        </entry></row>
551      </tbody>
552     </tgroup>
553    </table>
554
555    <table frame="top"><title>Default settings for PDU Present Request</title>
556     <tgroup cols="3">
557      <colspec colname="field"></colspec>
558      <colspec colname="type"></colspec>
559      <colspec colname="value"></colspec>
560      <thead>
561       <row>
562        <entry>Field</entry>
563        <entry>Type</entry>
564        <entry>Default Value</entry>
565       </row>
566      </thead>
567      <tbody>
568       <row><entry>
569         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
570        </entry></row>
571       <row><entry>
572         resultSetId</entry><entry>char*</entry><entry>"default"
573        </entry></row>
574       <row><entry>
575         resultSetStartPoint</entry><entry>int</entry><entry>1
576        </entry></row>
577       <row><entry>
578         numberOfRecordsRequested</entry><entry>int</entry><entry>10
579        </entry></row>
580       <row><entry>
581         num_ranges</entry><entry>int</entry><entry>0
582        </entry></row>
583       <row><entry>
584         additionalRanges</entry><entry>Z_Range</entry><entry>NULL
585        </entry></row>
586       <row><entry>
587         recordComposition</entry><entry>Z_RecordComposition</entry><entry>NULL
588        </entry></row>
589       <row><entry>
590         preferredRecordSyntax</entry><entry>Odr_oid</entry><entry>NULL
591        </entry></row>
592       <row><entry>
593         maxSegmentCount</entry><entry>int</entry><entry>NULL
594        </entry></row>
595       <row><entry>
596         maxRecordSize</entry><entry>int</entry><entry>NULL
597        </entry></row>
598       <row><entry>
599         maxSegmentSize</entry><entry>int</entry><entry>NULL
600        </entry></row>
601       <row><entry>
602         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
603        </entry></row>
604      </tbody>
605     </tgroup>
606    </table>
607    
608    <table frame="top"><title>Default settings for PDU Present Response</title>
609     <tgroup cols="3">
610      <colspec colname="field"></colspec>
611      <colspec colname="type"></colspec>
612      <colspec colname="value"></colspec>
613      <thead>
614       <row>
615        <entry>Field</entry>
616        <entry>Type</entry>
617        <entry>Default Value</entry>
618       </row>
619      </thead>
620      <tbody>
621       <row><entry>
622         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
623        </entry></row>
624       <row><entry>
625         numberOfRecordsReturned</entry><entry>int</entry><entry>0
626        </entry></row>
627       <row><entry>
628         nextResultSetPosition</entry><entry>int</entry><entry>0
629        </entry></row>
630       <row><entry>
631         presentStatus</entry><entry>int</entry><entry>Z_PRES_SUCCESS
632        </entry></row>
633       <row><entry>
634         records</entry><entry>Z_Records</entry><entry>NULL
635        </entry></row>
636       <row><entry>
637         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
638        </entry></row>
639      </tbody>
640     </tgroup>
641    </table>
642    
643    <table frame="top"><title>Default settings for Delete Result Set Request
644     </title>
645     <tgroup cols="3">
646      <colspec colname="field"></colspec>
647      <colspec colname="type"></colspec>
648      <colspec colname="value"></colspec>
649      <thead>
650       <row>
651        <entry>Field</entry>
652        <entry>Type</entry>
653        <entry>Default Value</entry>
654       </row>
655      </thead>
656      <tbody>
657       <row><entry>referenceId
658        </entry><entry>Z_ReferenceId</entry><entry>NULL
659        </entry></row>
660       <row><entry>
661         deleteFunction</entry><entry>int</entry><entry>Z_DeleteRequest_list
662        </entry></row>
663       <row><entry>
664         num_ids</entry><entry>int</entry><entry>0
665        </entry></row>
666       <row><entry>
667         resultSetList</entry><entry>char**</entry><entry>NULL
668        </entry></row>
669       <row><entry>
670         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
671        </entry></row>
672      </tbody>
673     </tgroup>
674    </table>
675
676    <table frame="top"><title>Default settings for Delete Result Set Response
677     </title>
678     <tgroup cols="3">
679      <colspec colname="field"></colspec>
680      <colspec colname="type"></colspec>
681      <colspec colname="value"></colspec>
682      <thead>
683       <row>
684        <entry>Field</entry>
685        <entry>Type</entry>
686        <entry>Default Value</entry>
687       </row>
688      </thead>
689      <tbody>
690       <row><entry>
691         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
692        </entry></row>
693       <row><entry>
694         deleteOperationStatus</entry><entry>int</entry>
695        <entry>Z_DeleteStatus_success</entry></row>
696       <row><entry>
697         num_statuses</entry><entry>int</entry><entry>0
698        </entry></row>
699       <row><entry>
700         deleteListStatuses</entry><entry>Z_ListStatus**</entry><entry>NULL
701        </entry></row>
702       <row><entry>
703         numberNotDeleted</entry><entry>int</entry><entry>NULL
704        </entry></row>
705       <row><entry>
706         num_bulkStatuses</entry><entry>int</entry><entry>0
707        </entry></row>
708       <row><entry>
709         bulkStatuses</entry><entry>Z_ListStatus</entry><entry>NUL
710         L</entry></row>
711       <row><entry>
712         deleteMessage</entry><entry>char*</entry><entry>NULL
713        </entry></row>
714       <row><entry>
715         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
716        </entry></row>
717      </tbody>
718     </tgroup>
719    </table>
720
721    <table frame="top"><title>Default settings for Scan Request
722     </title>
723     <tgroup cols="3">
724      <colspec colname="field"></colspec>
725      <colspec colname="type"></colspec>
726      <colspec colname="value"></colspec>
727      <thead>
728       <row>
729        <entry>Field</entry>
730        <entry>Type</entry>
731        <entry>Default Value</entry>
732       </row>
733      </thead>
734      <tbody>
735       <row><entry>
736         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
737        </entry></row>
738       <row><entry>
739         num_databaseNames</entry><entry>int</entry><entry>0
740        </entry></row>
741       <row><entry>
742         databaseNames</entry><entry>char**</entry><entry>NULL
743        </entry></row>
744       <row><entry>
745         attributeSet</entry><entry>Odr_oid</entry><entry>NULL
746        </entry></row>
747       <row><entry>
748         termListAndStartPoint</entry><entry>Z_AttributesPlus...
749        </entry><entry>NULL</entry></row>
750       <row><entry>
751         stepSize</entry><entry>int</entry><entry>NULL
752        </entry></row>
753       <row><entry>
754         numberOfTermsRequested</entry><entry>int</entry><entry>20
755        </entry></row>
756       <row><entry>
757         preferredPositionInResponse</entry><entry>int</entry><entry>NULL
758        </entry></row>
759       <row><entry>
760         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
761        </entry></row>
762      </tbody>
763     </tgroup>
764    </table>
765
766    <table frame="top"><title>Default settings for Scan Response
767     </title>
768     <tgroup cols="3">
769      <colspec colname="field"></colspec>
770      <colspec colname="type"></colspec>
771      <colspec colname="value"></colspec>
772      <thead>
773       <row>
774        <entry>Field</entry>
775        <entry>Type</entry>
776        <entry>Default Value</entry>
777       </row>
778      </thead>
779      <tbody>
780       
781       <row><entry>
782         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
783        </entry></row>
784       <row><entry>
785         stepSize</entry><entry>int</entry><entry>NULL
786        </entry></row>
787       <row><entry>
788         scanStatus</entry><entry>int</entry><entry>Z_Scan_success
789        </entry></row>
790       <row><entry>
791         numberOfEntriesReturned</entry><entry>int</entry><entry>0
792        </entry></row>
793       <row><entry>
794         positionOfTerm</entry><entry>int</entry><entry>NULL
795        </entry></row>
796       <row><entry>
797         entries</entry><entry>Z_ListEntris</entry><entry>NULL
798        </entry></row>
799       <row><entry>
800         attributeSet</entry><entry>Odr_oid</entry><entry>NULL
801        </entry></row>
802       <row><entry>
803         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
804        </entry></row>
805      </tbody>
806     </tgroup>
807    </table>
808
809    <table frame="top"><title>Default settings for Trigger Resource
810      Control Request </title>
811     <tgroup cols="3">
812      <colspec colname="field"></colspec>
813      <colspec colname="type"></colspec>
814      <colspec colname="value"></colspec>
815      <thead>
816       <row>
817        <entry>Field</entry>
818        <entry>Type</entry>
819        <entry>Default Value</entry>
820       </row>
821      </thead>
822      <tbody>
823       
824       <row><entry>
825         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
826        </entry></row>
827       <row><entry>
828         requestedAction</entry><entry>int</entry><entry>
829         Z_TriggerResourceCtrl_resou..
830        </entry></row>
831       <row><entry>
832         prefResourceReportFormat</entry><entry>Odr_oid</entry><entry>NULL
833        </entry></row>
834       <row><entry>
835         resultSetWanted</entry><entry>bool_t</entry><entry>NULL
836        </entry></row>
837       <row><entry>
838         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
839        </entry></row>
840       
841      </tbody>
842     </tgroup>
843    </table>
844
845    <table frame="top"><title>Default settings for Resource
846      Control Request</title>
847     <tgroup cols="3">
848      <colspec colname="field"></colspec>
849      <colspec colname="type"></colspec>
850      <colspec colname="value"></colspec>
851      <thead>
852       <row>
853        <entry>Field</entry>
854        <entry>Type</entry>
855        <entry>Default Value</entry>
856       </row>
857      </thead>
858      <tbody>
859       
860       <row><entry>
861         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
862        </entry></row>
863       <row><entry>
864         suspendedFlag</entry><entry>bool_t</entry><entry>NULL
865        </entry></row>
866       <row><entry>
867         resourceReport</entry><entry>Z_External</entry><entry>NULL
868        </entry></row>
869       <row><entry>
870         partialResultsAvailable</entry><entry>int</entry><entry>NULL
871        </entry></row>
872       <row><entry>
873         responseRequired</entry><entry>bool_t</entry><entry>FALSE
874        </entry></row>
875       <row><entry>
876         triggeredRequestFlag</entry><entry>bool_t</entry><entry>NULL
877        </entry></row>
878       <row><entry>
879         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
880        </entry></row>
881      </tbody>
882     </tgroup>
883    </table>
884
885    <table frame="top"><title>Default settings for Resource
886      Control Response</title>
887     <tgroup cols="3">
888      <colspec colname="field"></colspec>
889      <colspec colname="type"></colspec>
890      <colspec colname="value"></colspec>
891      <thead>
892       <row>
893        <entry>Field</entry>
894        <entry>Type</entry>
895        <entry>Default Value</entry>
896       </row>
897      </thead>
898      <tbody>
899       
900       <row><entry>
901         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
902        </entry></row>
903       <row><entry>
904         continueFlag</entry><entry>bool_t</entry><entry>TRUE
905        </entry></row>
906       <row><entry>
907         resultSetWanted</entry><entry>bool_t</entry><entry>NULL
908        </entry></row>
909       <row><entry>
910         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
911        </entry></row>
912      </tbody>
913     </tgroup>
914    </table>
915    
916    <table frame="top"><title>Default settings for Access
917      Control Request</title>
918     <tgroup cols="3">
919      <colspec colname="field"></colspec>
920      <colspec colname="type"></colspec>
921      <colspec colname="value"></colspec>
922      <thead>
923       <row>
924        <entry>Field</entry>
925        <entry>Type</entry>
926        <entry>Default Value</entry>
927       </row>
928      </thead>
929      <tbody>
930       
931       <row><entry>
932         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
933        </entry></row>
934       <row><entry>
935         which</entry><entry>enum</entry><entry>Z_AccessRequest_simpleForm;
936        </entry></row>
937       <row><entry>
938         u</entry><entry>union</entry><entry>NULL
939        </entry></row>
940       <row><entry>
941         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
942        </entry></row>
943      </tbody>
944     </tgroup>
945    </table>
946
947    <table frame="top"><title>Default settings for Access
948      Control Response</title>
949     <tgroup cols="3">
950      <colspec colname="field"></colspec>
951      <colspec colname="type"></colspec>
952      <colspec colname="value"></colspec>
953      <thead>
954       <row>
955        <entry>Field</entry>
956        <entry>Type</entry>
957        <entry>Default Value</entry>
958       </row>
959      </thead>
960      <tbody>
961       
962       <row><entry>
963         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
964        </entry></row>
965       <row><entry>
966         which</entry><entry>enum</entry><entry>Z_AccessResponse_simpleForm
967        </entry></row>
968       <row><entry>
969         u</entry><entry>union</entry><entry>NULL
970        </entry></row>
971       <row><entry>
972         diagnostic</entry><entry>Z_DiagRec</entry><entry>NULL
973        </entry></row>
974       <row><entry>
975         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
976        </entry></row>
977      </tbody>
978     </tgroup>
979    </table>
980
981    <table frame="top"><title>Default settings for Segment</title>
982     <tgroup cols="3">
983      <colspec colname="field"></colspec>
984      <colspec colname="type"></colspec>
985      <colspec colname="value"></colspec>
986      <thead>
987       <row>
988        <entry>Field</entry>
989        <entry>Type</entry>
990        <entry>Default Value</entry>
991       </row>
992      </thead>
993      <tbody>
994       
995       <row><entry>
996         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
997        </entry></row>
998       <row><entry>
999         numberOfRecordsReturned</entry><entry>int</entry><entry>value=0
1000        </entry></row>
1001       <row><entry>
1002         num_segmentRecords</entry><entry>int</entry><entry>0
1003        </entry></row>
1004       <row><entry>
1005         segmentRecords</entry><entry>Z_NamePlusRecord</entry><entry>NULL
1006        </entry></row>
1007       <row><entry>otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
1008        </entry></row>
1009      </tbody>
1010     </tgroup>
1011    </table>
1012
1013    <table frame="top"><title>Default settings for Close</title>
1014     <tgroup cols="3">
1015      <colspec colname="field"></colspec>
1016      <colspec colname="type"></colspec>
1017      <colspec colname="value"></colspec>
1018      <thead>
1019       <row>
1020        <entry>Field</entry>
1021        <entry>Type</entry>
1022        <entry>Default Value</entry>
1023       </row>
1024      </thead>
1025      <tbody>
1026
1027       <row><entry>
1028         referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
1029        </entry></row>
1030       <row><entry>
1031         closeReason</entry><entry>int</entry><entry>Z_Close_finished
1032        </entry></row>
1033       <row><entry>
1034         diagnosticInformation</entry><entry>char*</entry><entry>NULL
1035        </entry></row>
1036       <row><entry>
1037         resourceReportFormat</entry><entry>Odr_oid</entry><entry>NULL
1038        </entry></row>
1039       <row><entry>
1040         resourceFormat</entry><entry>Z_External</entry><entry>NULL
1041        </entry></row>
1042       <row><entry>
1043         otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
1044        </entry></row>
1045       
1046      </tbody>
1047     </tgroup>
1048    </table>
1049
1050   </sect1>
1051  </chapter>
1052
1053  <!-- Keep this comment at the end of the file
1054  Local variables:
1055  mode: sgml
1056  sgml-omittag:t
1057  sgml-shorttag:t
1058  sgml-minimize-attributes:nil
1059  sgml-always-quote-attributes:t
1060  sgml-indent-step:1
1061  sgml-indent-data:t
1062  sgml-parent-document: "yaz.xml"
1063  sgml-local-catalogs: "../../docbook/docbook.cat"
1064  sgml-namecase-general:t
1065  End:
1066  -->