3.1.1 Abstract Data Model

The following section specifies data and state maintained by the Content Indexing Services Protocol server. The data provided in this document explains how the protocol behaves. This section does not mandate that implementations adhere to this model as long as their external behavior is consistent with that described in this document.

An indexing service implementing the Content Indexing Services Protocol MUST maintain the following abstract data elements:

  • The list of clients connected to the server.

  • Information about each client, which includes:

    • Client's version (as indicated in the CPMConnectIn message specified in section 2.2.3.6).

    • Catalog associated with the client (by a CPMConnectIn message).

    • Additional client properties as specified in the Properties section.

    • Client's search query.

    • List of cursor (1) handles for the query, and position in result set for each handle.

    • Current set of bindings.

    • Current status of the query, which includes (for each cursor):

      • Number of rows in query result.

      • Numerator and denominator of query completion.

      • Last number of rows, reported by most recent CPMRatioFinishedOut message for this cursor.

      • Whether the query is monitored by the server for changes in query results, and if it is monitored, what changed in the query results since they were last reported to the client by CPMSendNotifyOut.

      • List of chapter handles, served by this query to a client.

      • List of bookmark handles for each cursor, served by this query to a client.

  • The current state of the indexing service, which can be "not initialized", "running", or "shutting down". These states are logical only, and can only affect possible error messages received from the service. Note that most of the time the server is in "running" state. The following is the state machine diagram for the server.

State machine diagram for the server

Figure 5: State machine diagram for the server

  • Per-catalog information: collection of indexed locations, number of documents indexed, size of inverted index, number of unique keys, and so on (see section 2.2.3.1 for complete list), state which corresponds to the values of dwOldState in section 2.2.3.3.<13>

  • For each language supported, a database of word variations as discussed in GENERATE_METHOD_INFLECT in section 2.2.1.3.