tibrvTransport_CreateAcceptVc()
Function
Declaration
tibrv_statustibrvTransport_CreateAcceptVc
(
tibrvTransport* vcTransport,
const char** connectSubject,
tibrvTransport transport);
Purpose
Create a virtual circuit accept object.
Remarks
A virtual circuit transport can fill the same roles as an ordinary transport. Programs can supply them as arguments to calls that create inbox names, send messages, create listeners and other events.
Parameter |
Description |
|
The program supplies a location, and the function stores the new virtual circuit accept transport in that location. |
|
The program supplies a location, and the function stores the connect subject of the new virtual circuit accept transport in that location. After this call returns, the program must send a message to another program, inviting it to establish a virtual circuit. Furthermore, the reply subject of that invitation message must be this connect subject. To complete the virtual circuit, the second program must extract this subject from the invitation, and supply it to tibrvTransport_CreateConnectVc(). |
|
The virtual circuit uses this ordinary transport for communications. Programs may use this transport for other purposes. It is illegal to supply a virtual circuit transport object for this parameter (that is, you cannot nest a virtual circuit within another virtual circuit). |
Test Before Using
Either of two conditions indicate that the connection is ready to use:
• | The transport presents the VC.CONNECTED advisory. |
• | tibrvTransport_WaitForVcConnection() returns without error. |
Procedure
Immediately after this call, test both conditions with these two steps (in this order):
1. | Listen on the virtual circuit transport object for the VC.CONNECTED advisory. |
2. | Call tibrvTransport_WaitForVcConnection() with zero as the timeout parameter. |
For an explanation, see Testing the New Connection in
.Broken Connection
The following conditions can close a virtual circuit connection:
• | Contact is broken between the object and its terminal. |
• | The virtual circuit loses data in either direction (see DATALOSS in ). |
• | The partner program destroys its terminal object (or that terminal becomes invalid). |
• | The program destroys the object. |
• | The program destroys the object’s ordinary transport. |
Destroying VC Transports
Programs must explicitly destroy each virtual circuit transport object. Destroying a transport object precludes subsequent communications on that transport, and frees its storage. Attempting to use a destroyed transport in any way is an error. See tibrvTransport_Destroy().
Destroying a virtual circuit transport does not affect the ordinary transport that the terminal employs.
Direct Communication
Because virtual circuits rely on point-to-point messages between the two terminals, they can use direct communication to good advantage. To do so, both terminals must use network transports that enable direct communication.
For an overview, see Direct Communication in
.For programming details, see Specifying Direct Communication in
.Disabled Functions
Although virtual circuit transport objects have the same data type as transport objects, some transport functions are disabled for virtual circuit objects.
Transport Functions |
|
Legal Calls for Virtual Circuit Transports |
|
Disabled Calls for Virtual Circuit Transports |
See Also
tibrvTransport_CreateConnectVc()
tibrvTransport_WaitForVcConnection()
VC.CONNECTED
in
VC.DISCONNECTED
in