4.1.10.1.1 Cycle Start and Finish

There are five types of cycle starts:

  1. The client explicitly signals the start of a special single-response cycle when it requests an extended operation. Such cycles always consist of a single response which sets msgOut.fMoreData = false.

  2. The client explicitly signals the start of a cycle by sending msgIn.uuidInvocIdSrc = 0 or msgIn.usnvecFrom = 0.

  3. The client sends values of msgIn.uuidInvocIdSrc and msgIn.usnvecFrom that were returned by the server as msgOut.uuidInvocIdSrc and msgOut.usnvecTo in the final message of some other cycle.

  4. The server detects either that msgIn.uuidInvocIdSrc ≠ dc.invocationId or that msgIn.uuidInvocIdSrc and msgIn.usnvecFrom were not returned by the server in the final message of some other cycle.

  5. The server implementation MAY<17> declare the supplied values of msgIn.uuidInvocIdSrc and msgIn.usnvecFrom as too stale to use.

If the server starts a new cycle based on items 4 or 5, the server ignores msgIn.usnvecFrom, treating it as though it were zero.

The fields msgOut.usnvecTo and msgIn.usnvecFrom have the same type, USN_VECTOR. The internal format of USN_VECTOR is determined entirely by the server implementation and is subject only to the requirement that msgIn.usnvecFrom = 0 represents the start of a cycle. The server MAY<18> use USN_VECTOR to encode the start of a cycle.

Any server response message with msgOut.fMoreData = false is the final response in a cycle.