parameters: | first param data type, second param, [optional param data type] |
returns: | The list of return values data types or expected ranges |
errors: | List of errors data types |
events: | The first event
The second event |
buffered: | Simple yes, no or N/A |
All characteristics defined for every service shall be implemented for each language binding. At the end of each table, some explanatory text will follow which includes extra information pertinent to the implementation of that service.
parameters: | EAIParameterList |
returns: | EAIBrowserRef |
errors: | EAI_BROWSER_UNAVAILABLE |
events: | none |
buffered: | N/A |
If an application makes a request for the same browser twice in the same session then the same browser identifier shall be returned.
An implementation may define more than one variant of this service with different parameter types. For example there may be alternate forms to access a browser embedded in a HTML page and one for remote access from another machine within the same language binding.
Additional error types may be added by individual language bindings to deal with platform specific issues.
parameters: | EAIParameterList, EAIPropertyList |
returns: | EAIBrowserApp |
errors: | EAI_BROWSER_UNAVAILABLE |
events: | none |
buffered: | N/A |
The property list is used to define the properties of the browser application itself. The service request shall use the same property list definitions as those defined in loadURL. It is not required to support exactly the same capabilities, but the property list format shall be identical and any behaviours are identical.
This is a blocking request. No further requests from this external application will be processed until an EAIBrowser value has been generated (which may include the need to start a new instance of a VRML browser) or an error condition is generated.
Each request of this service shall produce a new browser application instance in accordance with the supplied parameter values.
An implementation may define more than one variant of this service with different parameter types. For example there may be alternate forms to start a browser on a remote machine or to create a new window within a running application.
Additional error types may be added by individual language bindings to deal with platform specific issues.
Although not specified, all services are capable of throwing an EAI_CONNECTION_ERROR whenever a request is made if the session between the application and the browser has failed.
Note: The data representation of the parameters or return values are not specified. It could be equally valid to represent all parameters as strings as it is for binary representations.
parameters: | EAIBrowserRef |
returns: | EAIBrowserName |
errors: | EAI_DISPOSED |
events: | None |
buffered: | no |
parameters: | EAIBrowserRef |
returns: | EAIBrowserVersion |
errors: | EAI_DISPOSED |
events: | None |
buffered: | no |
parameters: | EAIBrowserRef |
returns: | EAINavSpeed |
errors: | EAI_DISPOSED |
events: | None |
buffered: | no |
parameters: | EAIBrowserRef |
returns: | EAIFrameRate |
errors: | EAI_DISPOSED |
events: | None |
buffered: | No |
parameters: | EAIBrowserRef |
returns: | EAIURL |
errors: | EAI_URL_UNAVAILABLE
EAI_DISPOSED |
events: | None |
buffered: | no |
parameters: | EAIBrowserRef, EAINodeID [EAINodeID]s |
returns: | None |
errors: | EAI_INVALID_NODE
EAI_DISPOSED |
events: | EAI_B_Shutdown
EAI_B_Initialized |
buffered: | No |
Replace the current world with the EAINodeID value(s) as the new root nodes. If another replaceWorld or loadURL request is made during the processing of the current request, the current request is terminated and the new one started. In this case, no extra shutdown event shall be generated. The initialise event shall be generated at the point where the world is ready to be run.
parameters: | EAIBrowserRef, EAIURL [EAIURL]s, EAIPropertyList |
returns: | None |
errors: | EAI_INVALID_URL
EAI_DISPOSED |
events: | EAI_B_Shutdown
EAI_B_Initialize EAI_B_URLError |
buffered: | No |
The EAI_B_Initialized event is generated when the new nodes have been set and all browser specific initialization has taken place but before the first time driven event cascade has been started (event cascades may have previously resulted due to the initialization process through internal scripts).
The property list definition shall include at least one property that defines loading the URL supplied as a new world in the supplied EAIBrowserRef. If the property list is empty then the action is to replace the world of the current browser with the new world if the successful URL is a VRML file.
If another replaceWorld or loadURL request is made during the processing of the current request, the current request is terminated and the new one started. In this case, no extra shutdown event shall be generated. The initialise event shall be generated at the point where the world is ready to be run if replaceWorld was called.
parameters: | EAIBrowserRef, EAIString |
returns: | None |
errors: | EAI_DISPOSED |
events: | None |
buffered: | No |
parameters: | EAIBrowserRef, EAIString |
returns: | EAINodeID [EAINodeID]s |
errors: | EAI_INVALID_VRML
EAI_DISPOSED |
events: | None |
buffered: | No |
If the string contains legal VRML statements but does not contain any node instances, a NULL is returned. For example the string may contain EXTERNPROTO declarations but no instances of any node. The order of EAINodeID values returned is guaranteed to be in the order that the top level nodes are declared in the string.
parameters: | EAIBrowserRef, EAIURL [EAIURLs], EAINodeID, EAIFieldID |
returns: | None |
errors: | EAI_INVALID_URL
EAI_INVALID_NODE EAI_INVALID_FIELD EAI_DISPOSED |
events: | EAI_B_URLError |
buffered: | No |
The EAIFieldID value must designate an MFNode eventIn to pass the nodes as created otherwise an error is generated. The order of nodes passed to the destination node shall remain in the same order that the top level nodes are declared in the file.
parameters: | EAIBrowserRef, EAINodeID, EAIFieldID, EAINodeID, EAIFieldID, EAIAction |
returns: | None |
errors: | EAI_INVALID_NODE
EAI_INVALID_FIELD EAI_DISPOSED |
events: | None |
buffered: | Yes |
Route modification requests are to fit with the general event model scheme as defined in ISO/IEC 14772-1 4.10 Execution Processing. The end of the event cascade is considered to be the cascade that is initiated by the application sending events into the VRML browser environment. Any new cascades generated as a result of the processing of the initial events are shall not be considered for the determination of the event cascade.
If a single event is sent to the browser then at the point that its event cascade has completed is considered to be the end of the event cascade defined in Step 1 of ISO/IEC 14772-1 4.10.3 Execution Model. If events are batched together through the use of Update control (see 6.3.13, Update Control) then the end of the event cascade is considered to be the end of all the primary cascades caused by the release of the events at end update. That is, all event cascades shall have been completed before steps 2 - 8 of ISO/IEC 14772-1 4.10.3 are permitted to operate.
parameters: | EAIBrowserRef, EAIAction |
returns: | None |
errors: | EAI_DISPOSED |
events: | None |
buffered: | N/A |
The timestamp of events generated at the call to endUpdate are implementation dependent but should be consistent with the time within the current world. That is, timestamps cannot be in the "past" relative to the other current events generated internally with event model at the time when they are generated.
Begin update and End update are not nesting calls. Once begin update has been called, it may be called any number of times, but only a single end update call is needed to release the buffered events into the scenegraph. A call to end update without a previous matching begin update has no effect.
parameters: | EAIBrowserRef, EAIAction, EAIRequesterID |
returns: | None |
errors: | EAI_DISPOSED |
events: | Receiver of all EAIBrowserEvents |
buffered: | No |
The parameter of type EAIRequesterID could be inferred from the source of the input and may not need to be part of the parameters and is implementation dependent. Each binding to this service shall specify this requirement.
The parameter of type EAIAction specifies whether this is a request to add interest in events, or to remove interest in the events.
Any change to the current browser shall be notified to the listener that has registered interest in these events. These event notifications must be made independent of the method of communicating with the browser.
As a minimum, a conforming implementation shall provide the events defined in Section 4.5.3, Browser to External Application.
parameters: | EAIBrowserRef, EAIString |
returns: | EAINodeID |
errors: | EAI_INVALID_NAME
EAI_URL_UNAVAILABLE EAI_DISPOSED |
events: | None |
buffered: | No |
If the world contents have been replaced with a call to replaceWorld, then an EAI_INVALID_NAME error shall be generated as DEF names are not kept once the load has taken place.
parameters: | EAIBrowserRef |
returns: | None |
errors: | None |
events: | EAI_B_Shutdown |
buffered: | No |
Although not specified, all services are capable of throwing an EAI_CONNECTION_ERROR whenever a request is made if the session between the application and the browser has failed.
parameters: | EAINodeID |
returns: | EAIString |
errors: | EAI_DISPOSED |
events: | None |
buffered: | No |
parameters: | EAINodeID |
returns: | EAINodeType |
errors: | EAI_DISPOSED |
events: | None |
buffered: | No |
parameters: | EAINodeID, EAIFieldName |
returns: | EAIFieldID |
errors: | EAI_INVALID_NAME
EAI_DISPOSED |
events: | None |
buffered: | No |
parameters: | EAINodeID |
returns: | None |
errors: | None |
events: | None |
buffered: | Yes |
Disposing of a node does not remove the node from the scenegraph (if it was inserted in the first place) but rather removes any local information per client to it. The underlying VRML node representation is only disposed of if no other applications or scenegraph structures contain references to this node and the responsibility and timing for this action is browser implementation specific.
Although not specified, all services are capable of throwing an EAI_CONNECTION_ERROR whenever a request is made if the session between the application and the browser has failed.
parameters: | EAINodeID, EAIFieldID |
returns: | EAIFieldAccess |
errors: | None |
events: | None |
buffered: | No |
parameters: | EAINodeID, EAIFieldID |
returns: | EAIFieldType |
errors: | None |
events: | None |
buffered: | No |
parameters: | EAINodeID, EAIFieldID |
returns: | EAIFieldName |
errors: | None |
events: | None |
buffered: | No |
parameters: | EAINodeID, EAIFieldID |
returns: | EAIFieldValue |
errors: | EAI_INVALID_ACCESS_TYPE |
events: | None |
buffered: | No |
parameters: | EAINodeID, EAIFieldID, EAIFieldValue |
returns: | None |
errors: | EAI_INVALID_ACCESS_TYPE |
events: | None |
buffered: | Yes |
The value of the field may be a NODE if the field represents an MFNode or SFNode. It is permitted to send a null to a node or field in order to clear the value from that field. For example sending a null to the appearance eventIn of a Shape (ISO/IEC 14772-1 6.41 Shape) node shall result in the appearance field being cleared and set to the default value of NULL.
parameters: | EAINodeID, EAIFieldID, EAIAction, EAIRequesterID |
returns: | None |
errors: | EAI_INVALID_ACCESS_TYPE |
events: | EAIFieldEvent |
buffered: | No |
The parameter of type EAIRequesterID could be inferred from the source of the input and may not need to be part of the parameters.
The parameter of type EAIAction specifies whether this is a request to add interest in events, or to remove interest in the events.
What capabilities are permitted to be listened to are implementation dependent. For example, some implementations may permit listening to eventIn values and eventOut values while others will only permit eventOut values to be listened to.
http://www.vrml.org/Specifications/VRML97/part2/servRef.html