module Tictactoe {
exception BadTag {};
exception InvalidMove {};
exception AlreadyConnected {};
interface Client {
// Connect to another client, return a tag for future communication
long connect (in Client opponent) raises (AlreadyConnected);
// Disconnect from the game
void disconnect (in long tag)
raises (BadTag);
// Put a mark at given position
void put (in long tag, in short row, in short column)
raises (BadTag, InvalidMove);
// Request starting the game over
boolean request_reset (in long tag)
raises (BadTag);
// Response to request_reset
void reset (in long tag, in boolean ok)
raises (BadTag);
};
};