diff --git a/index.html b/index.html index 1316a47c..c4e5a5c5 100644 --- a/index.html +++ b/index.html @@ -680,6 +680,30 @@
invalid event id
+ invalid session creation job id
+ cancelled" or "failed".
+ invalid timeout
+ unknown session
+ All commands, except New Session and Status, - have an associated current session, +
A remote end has an associated
+ maximum timeout for async session creation in milliseconds
+ (an Integer). It may be null if “unlimited”.
+
+
A remote end has an associated
+ wait time for async session creation in milliseconds
+ (an Integer). It may be null if “unlimited”.
+
+
A session creation job is a task to create a session: + +
| Field + | Default + | JSON key + | Optional† + | Nullable + | Description† + |
|---|---|---|---|---|---|
| Session creation job ID + | + | "sessionCreationJobId"
+ | + | + | A string representation of a UUID used to uniquely identify this job. + |
| Session creation status + | "queuing"
+ | "status"
+ | + | + | String indicating session creation status,
+ one of "queueing", "creating", "created",
+ "failed", and "cancelled".
+ |
| Session creation timeout + | + | "timeout"
+ | + | ✓ + | Specified as an integer in milliseconds.
+ If session creation is not achieved within this timeout,
+ the job should be failed.
+ If null,
+ there is no timeout beyond implementation limits.
+ |
| Session creation requested time + | + | "requestedTime"
+ | + | + | When the session creation was requested as a Date. + |
| Session creation ended time + | + | "endedTime"
+ | ✓ + | + | When the job ended in success or failure as a Date. + |
| Session ID + | + | "sessionId"
+ | ✓ + | + | Session ID of the created session. + |
| Session creation events + | Empty JSON List + | "events"
+ | + | + | Time-ordered list of session creation events. + |
A session creation event is an event that occurred in the course of trying to create a session: + +
| Field + | Default + | JSON key + | Optional + | Nullable + | Description + |
|---|---|---|---|---|---|
| Event ID + | + | "eventId"
+ | + | + | A string representation of a UUID used to uniquely identify this event. + |
| Event time + | + | "time"
+ | + | + | Event time as a millisecond timestamp. + |
| Event type + | "progress"
+ | "type"
+ | ✓ + | + | Type of this event: "progress" or "error" or a vendor-prefixed extension type
+ |
| Message + | + | "message"
+ | + | + | Human readable description of an event. + |
| Event data + | + | "data"
+ | ✓ + | + | Object containing implementation-defined data associated with this event. + |
| Event stack trace + | "" + | "stacktrace"
+ | ✓ + | + | A stack trace report of the active stack frames at the time when the event occurred. + |
A remote end will maintain a list of session creation jobs. + +
With an implementation-specific schedule and priority,
+ a remote end should take implementation-defined steps on session creation jobs
+ with a status of "queueing".
+
+
For each session creation job, an intermediary node will + maintain a list of associated session creation jobs. + These include each session creation job on any upstream neighbor + that is created when the intermediary node executes the + Async New Session command to complete the job. + +
For each session creation job, an intermediary node will + maintain a associated list of sessions. These include + each session on any upstream neighbor that is created + when the intermediary node executes a New + Session command to complete the job. + +New Session, Async New Session, and Status commands + have no associated session or session creation job. + +
All other commands have an associated current session, which is the session in which that command will run.
A remote end has an associated list of @@ -2449,6 +2681,241 @@
| HTTP Method | +URI Template | +
|---|---|
| GET | +/session/{session id} | +
The remote end steps are: + +
Let session be a job in active sessions + with a session id matching session id + +
If session is null,
+ return error with error code unknown session.
+
+
Let body be a JSON Object initialised with: +
sessionId"
+ capabilities"
+ Return success with data body. +
| HTTP Method | +URI Template | +
|---|---|
| POST | +/session/async | +
The remote end steps are: + +
Let timeout be the result of getting the + property named timeout from parameters. + +
If maximum timeout for async session creation is an integer, + and timeout is undefined, + let timeout be min(an implementation-defined maximum timeout, maximum timeout for async session creation). +
If maximum timeout for async session creation is null,
+ and timeout is undefined,
+ let timeout be an implementation-defined maximum timeout.
+
If timeout is null,
+ let timeout be maximum timeout for async session creation.
+
If maximum timeout for async session creation is an integer, + and less than maximum timeout for async session creation, + return error with error code invalid timeout. +
If timeout is not null or an integer,
+ return error with error code invalid argument.
+
If the remote end is an intermediary node, take + implementation-defined steps that either result in returning + an error with error code session not created, + or in returning a success with data that is isomorphic to + that returned by remote ends according to the rest of this + algorithm. + +
If the maximum active sessions is equal to + the length of the list of active sessions, + return error with error code session not created. + +
Let capabilities be the result + of trying to process capabilities + with parameters as an argument. + +
If capabilities is null,
+ return error with error code session not created.
+
+
Let session creation job be a new JSON Object + with the following properties: + +
sessionCreationJobId"
+ status"
+ queuing".
+
+ timeout"
+ requestedTime"
+ events"
+ | HTTP Method | +URI Template | +
|---|---|
| GET | +/session/async/{session creation job id}{/event} | +
The remote end steps are: + +
Let session creation job be the job in session creation jobs + with a session creation job id matching session creation job id. + +
If session creation job is null,
+ return error with error code invalid session creation job id.
+
+
Let body be a JSON clone of session creation job. + +
If event is defined: + +
Let found be false. + +
Let events be the value of getting a property named events from body. + +
For each event object in events in reverse order: + +
If found is true, then break. + +
Let event id be the value of getting a property named eventId from event object. + +
If event equals event id, + set found to true. + +
If found is false, + return error with error code invalid event id. +
Let status be the value of getting a property named status from body. + +
Let cache timeout be null.
+
+
If status is "queueing" or "creating",
+ then set cache timeout to 1,000
+ or an implementation-defined predicted interval to the next event.
+
+
Set a property on body with name cacheTimeout and value cache timeout.
+
+ Local ends may use the cacheTimeout property to hint when to next poll for status.
+
+ Return success with data body.
+
| HTTP Method | +URI Template | +
|---|---|
| DELETE | +/session/async/{session creation job id} | +
The remote end steps are: + +
Let session creation job be the job in session creation jobs + with a session creation job id matching session creation job id. + +
If session creation job is null,
+ return error with error code invalid session creation job id.
+
+
If session creation job has a status of
+ "cancelled" or "failed",
+ return success with data null.
+
+
If session creation job has a status of
+ "created":
+
+
cancelled".
+
+ If session creation job has a status of
+ "queuing" or "creating"
+ and its session ID references an active session:
+
+
cancelled".
+ Return success with data null.
+
Let current delta x property
- equal delta x + current delta x and
+ equal delta x current delta x and
current delta y property equal
- delta y + current delta y.
+ delta y current delta y.
If last is true, return. @@ -10128,6 +10595,7 @@