|
Beschreibung
Mit der Funktion t_rcvdis() kann der Benutzer die Ursache eines Verbindungsabbaus abfragen.
Der Parameter fd spezifiziert den lokalen Transportendpunkt der aufgelösten Verbindung.
Der Parameter discon zeigt auf ein Objekt vom Typ struct t_discon.
Die Struktur t_discon ist in <xti.h> wie folgt deklariert:
struct t_discon { struct netbuf udata; int reason; int sequence; };
Nach Ausführung von t_rcvdis() steht in discon->reason ein protokollabhängiger Code, der die Ursache des Verbindungsabbaus angibt. Dieser Code entspricht einem der möglichen Werte für die Fehlervariable errno (definiert in <errno.h>). Folgende Codes sind derzeit möglich:
ECONNREFUSED
Der Verbindungswunsch wurde vom Partner zurückgewiesen.
ECONNRESET
Die Verbindung wurde vom Partner abgebrochen.
ENETDOWN
Die Verbindung wurde vom Transportsystem abgebrochen. In diesem Fall sollte der Benutzer den Transportendpunkt mit t_close() schließen.
ETIMEDOUT
Die Verbindung konnte nicht innerhalb einer bestimmten Zeitspanne aufgebaut werden.
Der in discon->sequence zurückgelieferte Wert identifiziert eine anstehende Verbindungsanforderung, die mit dem Verbindungsabbau in Zusammenhang steht. discon->sequence ist nur von Bedeutung, wenn der die Funktion t_rcvdis() aufrufende Transportbenutzer zuvor den Socket fd einmal oder mehrmals mit t_listen() auf anstehende Verbindungsanforderungen abgehört hat und nun diese Verbindungsanforderungen bearbeitet. Bei Eintreffen eines Verbindungsabbau-Wunsches kann der Benutzer mit dem Wert von discon->sequence feststellen, welche der anstehenden Verbindungsanforderungen betroffen ist.
Die Rückgabe von Benutzerdaten in discon->udata wird vom Transportanbieter nicht unterstützt.
Wenn der Transportbenutzer nicht an den zurückgelieferten Werten von discon->reason und discon->sequence interessiert ist, kann er beim Aufruf von t_rcvdis() den Null-Zeiger als aktuellen Parameter für discon angeben.
Returnwert
0:
Bei Erfolg.
-1:
Bei Fehler. t_ errno wird gesetzt, um den Fehler anzuzeigen.
Fehler
TBADF
Der angegebene Dateideskriptor verweist nicht auf einen Transportendpunkt.
TNODIS
Auf dem angegebenen Transportendpunkt ist zurzeit keine Anforderung zum Verbindungsabbau vorhanden.
TNOTSUPPORT
Diese Funktion wird vom darunter liegenden Transportanbieter nicht unterstützt.
TOUTSTATE
Innerhalb einer Sequenz von XTI-Funktionsaufrufen für den Transportendpunkt fd wurde die Funktion an der falschen Stelle aufgerufen.
TSYSERR
Während der Ausführung dieser Funktion ist ein Systemfehler aufgetreten.