CAP/doc/asp.notes

140 lines
4.7 KiB
Plaintext

CAP note: last revision April 1, 1987
UNIX Appletalk Session Protocol (ASP) Implementation notes
Last revision: February 23, 1988
Previous revision: April 1, 1987
Design document: Inside Appletalk, June 1986.
There are two major things to note about this version of ASP.
First, it uses a non-standard interface. Second, some of the error
codes have slightly different meanings. For now, you'll have to go
the source to get to the interfaces (sorry).
This is a preliminary note that defines some of the specifics of the
CAP version of ASP. Mostly, they are error codes which are added or
used slighltly differently or out of the specified context. Maybe in
the future, there will be a more detailed document that will go into
more depth.
SPGetStat
aspFault - unexpected internal inconsistency - usually bad atp
completion.
noATPResource - can't get ATP resources
SizeErr - request too big (shouldn't happen)
SPOpenSession
aspFault - unexpected internal inconsistency - usually bad atp
completion.
noATPResource - can't get ATP resources
SizeErr - request too big (shouldn't happen)
SPCloseSession
aspFault - unexpected internal inconsistency - usually bad atp
completion.
noATPResource - can't get ATP resources
SizeErr - request too big (shouldn't happen)
sktClosed - socket already closed (in some way)
SPWrite
aspFault - unexpected internal inconsistency - usually bad atp
completion.
noATPResource - can't get ATP resources
SizeErr - request too big
NoAck - no acknowlegment in the specfied timeout
SPCommand
aspFault - unexpected internal inconsistency - usually bad atp
completion.
noATPResource - can't get ATP resources
SizeErr - request too big
NoAck - no acknowlegment in the specfied timeout
SPWrtContinue
aspFault - unexpected internal inconsistency - usually bad atp
completion.
noATPResource - can't get ATP resources
SizeErr - request too big
NoAck - no acknowlegment in the specfied timeout
SPAttention
aspFault - unexpected internal inconsistency - usually bad atp
completion.
noATPResource - can't get ATP resources
SizeErr - request too big
SPGetStat
aspFault - unexpected internal inconsistency - usually bad atp
completion.
noATPResource - can't get ATP resources
SizeErr - request too big (Shouldn't happen)
SPWrtReply, SPCmdReply
noATPResource - can't get ATP resources
NoAck - No acknowledgement to reply - decided to do this instead
of closing session (really means no rel received, but should
close session based on tickle then...)
SPGetRequest
noATPResource - can't get ATP resources
SessClosed - session closed underneath us
BadReqRcvd - unexpected request received - please reissue getRequest
SPGetSession
NoMoreSessions - either out of sessions or atp sockets
SktClosed - SLS closed!!!!!
SPInit
noATPResource - can't get ATP resources
EXTENSIONS
* aspInit(n) tells asp to allow up to n sessions (total, not per sls)
The SPFork and SPShutdown calls are necessary because the way ASP is
defined, the client sends tickles to the Server Listener Socket (SLS).
If one needs to fork off clients to handle ASP connections, then it is
necessary for the base process to watch for incoming tickles. The
child process cannot do this since the SLS must not be read from by
the child (or else the base process will not see the input).
* SPFork(srn, hc_tickle, open_tickle) tells asp to fork and leave things
in the following state:
In the base process:
If srn points to a server connection, then the connection is left
"half-closed". It listens for incoming tickle requests.
Certain outgoing calls are still allowed (SPClose,
SPAttention). In all other respects, the connection is deemed
closed (and in fact, the Sever Session Socket created is
closed -- SPAttention and SPClose sends out on the SLS when
half closed). If the srn points to a client connection, the
connection is torn down.
In the child process:
All half closed connections are discarded (without sending
closes etc). The SLS is discarded.
In addition, hc_tickle tells the base process to continue tickling the
remote (useful if child process may block). (Default is considered
off since it the parent really shouldn't need to do this, but then
again this whole exercise shouldn't be necessary). hc stands for the
half-closed copy of the connection.
open_tickle tells the child process whether the child should tickle
the remote. If the base process does the tickling, it probably isn't
necessary for the child process to do it... open, of course, stands
for the "open" copy of the connection.
* SPShutdown(srn) finishes closing down a half closed socket.
* SPGetNetworkInfo(srn, AddrBlock *addr)
returns the remote WSS (server) or SSS (client) address. You must
supply a block that is filled in.