The I2A2 external protocol between client hosts and the DBM net daemon servants has a reply paradigm that consists of two replies,
ACK for positive acknowledgement, and NAK for negative acknowledgement. The reply messages are accompanied by fields that explain
and expand on the replies.
'a' - The ACK Reply The single lower case alphabetic character 'a' signals a positive acknowledgement reply. The fields that follow it in the reply message contain information about the operation requested by the command.
For example, an 'a' reply to a lookup command, delivered to the reflector, will have fields that contain the PUID, the alias, and the canonical name of the person whose key was supplied in a field of the lookup command.
A lookup ACK message might appear this way (\t is the TAB field separator):
Canonical Name is the person's full name and 'N' is its field identifier.
puid is the associated PUID number and 'p' is its field identifier.
aka is the alias to the PUID and 'a' is its field identifier.
'+' - The Continuation Reply - The continuation reply code is used by a net daemon when the reply information is too large for a single message.
The first message sent by the net daemon contains the acknowledgement reply code, ACK or NAK, and subsequent messages contain the continuation reply code. The first and all subsequent messages except the last must also end in a PUIDNETD_DATA_CONT field identifier. See message continuation for more information. 'n' - The NAK reply - The single lower case alphabetic character 'n' signals a negative acknowledgement reply. The fields that follow usually explain the reason for the negative reply. The fields may contain an error number, an error message, or additional information pertinent to the command.
A negative reply to a lookup command that supplied a PUID alias as a key might look like this:
n\te17\tMPerson not found (75)\t\r\n
"17" is the external protocol error number and 'e' is its field identifier.
"Person not found(75)" is the error message the DBM sent the net daemon and its associated internal protocol error number and 'M' is the field identifier
'w' - The Welcome Reply The single lower case alphabetic character 'w' signals that a successful connection has been made from the client host software to the DBM's net daemon servant. The client host software must listen for a Welcome or NAK reply when it initiates a connection. Symbols - The reply symbol names in puidnetd.h have a PUIDNETD_REPL_ prefix. They are:
a - PUIDNETD_REPL_ACK
+ - PUIDNETD_REPL_CONT
n - PUIDNETD_REPL_NAK
w - PUIDNETD_REPL_WELCOME
Accompanying Fields Fields that accompany the ACK reply code ('a') depend on the command in the message to which the ACK is a positive reply.
The NAK reply code may be accompanied by two fields:
e -- This field always accompanies a NAK reply. Its data value is an external protocol error number, defined by the PUIDNETD_E symbols in puidnetd.h. The field identifier's symbol is PUIDNETD_DATA_ERRC.
M -- The data values in the multiple (perhaps none) message fields that accompany a NAK reply supply additional information about the PUIDNETD_DATA_ERRC error condition. PUIDNETD_DATA_MSG is the field identifier symbol.