#pragma once #include #include #include module MW { /** * * The MWRoomCallback interface is the interface that clients implement * as their callback object. * * The server calls operations of this interface to communicate * with connected clients. * **/ interface MWMapCallback { /** * * The server invokes this operation when the client sets the callback * for a session. This provides the client with the initial list of users * currently in the MW room. * * @param users The names of users currently in the MW room. * **/ void init(Ice::StringSeq users); /** * * The server invokes this operation to deliver a message * that was sent to the MW room. * * @param name The name of the user that send the message. * * @param message The contents of the message. * * @param timestamp The time at which the message was sent. * **/ void send(long timestamp, string name, string message); /** * * The server invokes this operation when a user joins * the MW room. * * @param name The name of the user that joined the MW room. * * @param timestamp The time at which the user joined the MW room. * **/ void join(long timestamp, string name); /** * * The servers invokes this operation when a user leaves * the MW room. * * @param name The name of the user that left the MW room. * * @param timestamp The time at which the user left the MW room. * **/ void leave(long timestamp, string name); } /** * * A MWSession is a custom Glacier2::Session for clients that use * Glacier2 and support callbacks (such as C++, C# and clients). * * @see Glacier2::Session * **/ interface MWSession extends Glacier2::Session { /** * * The setCallback operation is called by clients to set the * callback used to receive notification of activity in the * room. Clients receive notifications as soon as they call this * operation (before setCallback returns). * * The first callback made by the server is a call to * MWRoomCallback::init, which delivers the current list of * users to the client. * * @param cb The callback the server uses to deliver notifications. * * @see MWRoomCallback * **/ void setCallback(MWMapCallback* cb); /** * * Send a message to the MW room. * * @param message The message to be sent. * * @return The time at which the message is sent. * * @throws InvalidMessageException should the message be invalid. * **/ long send(string message) throws InvalidMessageException; } }