Z39.50 over XER - It worked!

Hi all,

Its still all internal, alpha, and all of that, but I thought I would
post to say that we got a first XER conversation going to our database
server. We have not committed to including in a commercial product,
but it was interesting to have a go.

I wrote a little script to send requests to our server just using a
socket, and it sent back responses. Needs more work (as always), but
it was not too bad. I actually typed in both packets without typing
errors first time (they worked!). This gave me some encouragement
as to the feasibility of using XER in practice - it is not that hard
to work out the packets given a copy of the ASN.1 spec.

If anyone expresses interest, I can look at putting a alpha version
up on a public site. I am not sure how useful XER really will be
with Z39.50, but it is interesting. I think that I would like
to see the server return an error message for malformed packets
(it just drops the connection at present). If people craft packets
by hand (as I did), then getting back error messages is much better
than a dropped connection due to a typing error in the request packet.

Ray, we will build up a full list of suggested corrections and minor
changes and mail it through to you sometime for your consideration
(case, missing names, etc). For XER, it would be good for issues
such as type-1 -> type1 changes to be finialized for the new draft
of the ASN.1 so it could become the standard basis for XER.

Alan

ps: Here are 2 manually typed request packets (does a CCL query) and
automatically generated response packets.


<PDU>
<initRequest>
<protocolVersion><version-1/><version-2/><version-3/></protocolVersion>
<options><search/><present/><scan/><namedResultSets/></options>
<preferredMessageSize>1000000</preferredMessageSize>
<exceptionalRecordSize>1000000</exceptionalRecordSize>
<idAuthentication>
<idPass>
<userId>XXX</userId>
<password>XXX</password>
</idPass>
</idAuthentication>
</initRequest>
</PDU>

<PDU><initResponse>
  <protocolVersion><version-1/><version-2/><version-3/></protocolVersion>
  <options><search/><present/><scan/><namedResultSets/></options>
  <preferredMessageSize>1000000</preferredMessageSize>
  <exceptionalRecordSize>1000000</exceptionalRecordSize>
  <result><true/></result>
  <implementationId>TeraText Z39.50 database server</implementationId>
  <implementationName/>
  <implementationVersion>4.1.0 (sparc-solaris ptmalloc Debug)</implementationVersion>
</initResponse></PDU>

<PDU>
<searchRequest>
<smallSetUpperBound>0</smallSetUpperBound>
<largeSetLowerBound>1000</largeSetLowerBound>
<mediumSetPresentNumber>1</mediumSetPresentNumber>
<replaceIndicator><true/></replaceIndicator>
<resultSetName>default</resultSetName>
<databaseNames><DatabaseName>Manuals</DatabaseName></databaseNames>
<query>
<type-2>413f</type-2>
</query>
</searchRequest>
</PDU>

<PDU><searchResponse>
  <resultCount>974</resultCount>
  <numberOfRecordsReturned>1</numberOfRecordsReturned>
  <nextResultSetPosition>2</nextResultSetPosition>
  <searchStatus><true/></searchStatus>
  <presentStatus><success/></presentStatus>
  <records><responseRecords>
    <NamePlusRecord>
      <name>Manuals</name>
      <record><retrievalRecord>
        <direct-reference>iso(1).member-body(2).840.10003.5.105</direct-reference>
        <encoding><single-ASN1-type><GenericRecord>
          <TaggedElement>
            <tagType>3</tagType>
            <tagValue><string>Summary</string></tagValue>
            <tagOccurrence>0</tagOccurrence>
            <content><string>Getting Started, TeraText&#153; Database System   Release 4.0</string></content>
          </TaggedElement>
          <TaggedElement>
            <tagType>1</tagType>
            <tagValue><numeric>23</numeric></tagValue>
            <content><string>docload_fragment</string></content>
          </TaggedElement>
        </GenericRecord></single-ASN1-type></encoding>
      </retrievalRecord></record>
    </NamePlusRecord>
  </responseRecords></records>
</searchResponse></PDU>

-- 
Alan Kent (mailto:ajk@mds.rmit.edu.au, http://www.mds.rmit.edu.au/~ajk/)
Project: TeraText Technical Director, InQuirion Pty Ltd (www.inquirion.com)
Postal: Multimedia Database Systems, RMIT, GPO Box 2476V, Melbourne 3001.
Where: RMIT MDS, Bld 91, Level 3, 110 Victoria St, Carlton 3053, VIC Australia.
Phone: +61 3 9925 4114  Reception: +61 3 9925 4099  Fax: +61 3 9925 4098 

Received on Monday, 6 May 2002 22:02:04 UTC