We adopt an XML-like syntax for the client/server communication
protocol. We use the same extended BNF notation as in
Appendix A to describe the syntax of protocol
messages. The
name
and
number
terminals are defined
in exactly the same way as for PPDDL. An
integer
is a
nonempty string of numeric characters. A
message
is an
arbitrary character string, possibly empty.
Figure 13 shows the expected sequence of messages. A
session starts by the client sending a
session-request
message to the server. The server replies with a
session-init
message, which tells the client the number
of evaluation rounds that will be run. To start an evaluation round,
the client sends a
round-request
message, to which the
server replies with a
round-init
message. At this point the
evaluation round starts. The server sends a
turn-response
message to the client, which can be a
state
message or an
end-round
message. For every
state
message that
the client receives, it sends an
action spec
message in
return. Once the client receives an
end-round
message, it
ends the current evaluation round. The client then starts a new
evaluation round with a
round-request
message to the server,
or waits for an
end-session
message from the server in case
all rounds have already been run. The server sends an
error
message to the client if an error occurs, for example if the server
receives an unexpected message from the client.