II Data Structures
-
Connection Table
-
Process Table
-
Input Link Table
-
Output Link Table
-
Link Assignment Table
Connection Table
This holds all information pertaining to local sockets, particularly whether a socket is engaged in a connection, and if so, what state the connection is in. Entries are keyed by local socket, but other tables have pointers into this table also. (See the Process Table, Input Link Table, and Output Link Table.)
Each entry contains the following information:
-
local socket (key)
-
foreign socket
-
link
-
connection state
-
flow state and buffer control
-
pointer to user's process
-
reconnection control state
-
queue of waiting callers
The local socket is a 32 bit number. If no entry exists for a particular socket, it may be created with null values.
The foreign socket is a 40 bit number. This field will be unassigned if no connection is established.
The link is an 8 bit number and is the link over which data is sent from the sender to the receiver. A socket is a receive socket iff its low-order bit is zero.
Connection state refers to whether a connection is open or not, etc. The following possibilities may occur.
-
local process has requested a connection
-
foreign process(es) has/have requested a connection
-
connection established
-
reconnection in progress
-
close waiting
-
reconnection waiting
Flow state and buffer control refer to checking for RFNM's sending and accepting cease, suspend and resume commands, and keeping track of incoming or outgoing data.
A pointer to the user's process is necessary if the process has requested a connection.
If reconnection is in progress, it is necessary to keep track of the sequence of events. A socket engaged in reconnection is either an end or a middle. If it's a middle, it is necessary to store the eight bit name of the other middle attached to the same process, and to record receipt of END and RDY commands.
Finally, if RFC's are received either when the socket is busy or when no process has engaged it, the RFC's are stacked first-in-first-out on a queue for the named local socket.
Process Table
This table associates a process with a socket. It is used to process system calls.
Input Link Table
This table associates receive links with local sockets. It is used to decide for whom incoming messages are destined.
Output Link Table
This table associates send links with local sockets. It is used to interpret RFNM's and RSM commands.
Link Assignment Table
Links are assigned by receivers. This table shows which links are free.