X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=doc%2Fasn.xml;h=78ee8148a1c0ce6a43c4301eb7078ed064602757;hb=refs%2Ftags%2Fv4.2.48;hp=bb84b528260101bf189fbd722ac0062535e331dd;hpb=d940392c53c32ccf76fb287cc5b997b9e921a431;p=yaz-moved-to-github.git
diff --git a/doc/asn.xml b/doc/asn.xml
index bb84b52..78ee814 100644
--- a/doc/asn.xml
+++ b/doc/asn.xml
@@ -5,7 +5,8 @@
various PDUs of the Z39.50 protocol, as well as for the complex types
appearing within the PDUs. For the primitive data types, the C
representation often takes the form of an ordinary C language type,
- such as int. For ASN.1 constructs that have no direct
+ such as Odr_int which is equivalent to an integral
+ C integer. For ASN.1 constructs that have no direct
representation in C, such as general octet strings and bit strings,
the &odr; module (see section The ODR Module)
provides auxiliary definitions.
@@ -14,12 +15,12 @@
The &asn; module is located in sub directory z39.50.
There you'll find C files that implements encoders and decoders for the
Z39.50 types. You'll also find the protocol definitions:
- z3950v3.asn, esupdate.asn,
+ z3950v3.asn, esupdate.asn,
and others.
Preparing PDUs
-
+
A structure representing a complex ASN.1 type doesn't in itself contain the
members of that type. Instead, the structure contains
@@ -37,7 +38,7 @@
taste, there are at least three different approaches that you may take
when you allocate the structures.
-
+
You can use static or automatic local variables in the function that
prepares the PDU. This is a simple approach, and it provides the most
@@ -72,7 +73,7 @@
some of its elements, while you leave other elements pointing to global
or per-session default variables.
-
+
The &asn; module provides an important aid in creating new PDUs. For
each of the PDU types (say, Z_InitRequest), a
@@ -100,11 +101,11 @@
Z_<type> *zget_<type>(ODR o);
-
+
eg.:
-
+
Z_InitRequest *zget_InitRequest(ODR o);
@@ -118,21 +119,21 @@
zget_APDU() is provided, which allocates
a top-level Z-APDU of the type requested:
-
+
Z_APDU *zget_APDU(ODR o, int which);
-
+
The which parameter is (of course) the discriminator
belonging to the Z_APDUCHOICE type.
All of the interface described here is provided by the &asn; module, and
you access it through the proto.h header file.
-
+
EXTERNAL Data
-
+
In order to achieve extensibility and adaptability to different
application domains, the new version of the protocol defines many
@@ -142,7 +143,7 @@
specialized version of the EXTERNAL construct, called
Z_External.It is defined thus:
-
+
typedef struct Z_External
{
@@ -183,7 +184,7 @@ typedef struct Z_External
} u;
} Z_External;
-
+
When decoding, the &asn; module will attempt to determine which
syntax describes the data by looking at the reference fields
@@ -197,7 +198,7 @@ typedef struct Z_External
For non-ASN.1 data such as MARC records, use the
octet_aligned arm of the union.
-
+
Some servers return ASN.1 structured data values (eg. database
records) as BER-encoded records placed in the
@@ -206,7 +207,7 @@ typedef struct Z_External
these records. To help you decode the records in the application, the
function
-
+
Z_ext_typeent *z_ext_gettypebyref(const oid *oid);
@@ -218,7 +219,7 @@ typedef struct Z_External
Z_ext_typeent
is defined as:
-
+
typedef struct Z_ext_typeent
{
@@ -227,7 +228,7 @@ typedef struct Z_ext_typeent
Odr_fun fun; /* decoder function */
} Z_ext_typeent;
-
+
The what member contains the
Z_External union discriminator value for the
@@ -238,7 +239,7 @@ typedef struct Z_ext_typeent
record syntax, the value of fun would be
z_SUTRS (a function pointer).
-
+
If you receive an EXTERNAL which contains an octet-string value that
you suspect of being an ASN.1-structured data value, you can use
@@ -248,7 +249,7 @@ typedef struct Z_ext_typeent
function to decode the BER string (see
).
-
+
If you want to send EXTERNALs containing
ASN.1-structured values in the occtet-aligned branch of the CHOICE, this
@@ -265,7 +266,7 @@ typedef struct Z_ext_typeent
is necessary to tell the different, structured types apart
on decoding.
-
+
Eventually, the EXTERNAL processing will most likely
@@ -275,15 +276,15 @@ typedef struct Z_ext_typeent
various modules.
-
+
PDU Contents Table
-
+
We include, for reference, a listing of the fields of each top-level
PDU, as well as their default settings.
-
+