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