| /* $Id$ |
| * |
| * Copyright 2007-2008 Cisco Systems Inc. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| * use this file except in compliance with the License. You may obtain a copy |
| * of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| * License for the specific language governing permissions and limitations |
| * under the License. |
| */ |
| |
| module org.apache.etch.examples.chat |
| |
| /** |
| * The Chat example program implements a simple service |
| * for communicating between logged in users. |
| */ |
| @Authorize( isLoggedIn ) @Timeout( 4000 ) |
| service Chat |
| { |
| /** |
| * Exception thrown if Chat fails. |
| * |
| * @param msg the reason for the failure. |
| */ |
| exception Failure( string msg ) |
| |
| ////////// |
| // AUTH // |
| ////////// |
| |
| /** |
| * Marks the user as logged in if they are authentic and have the right |
| * to utilize the service. |
| * |
| * @param name the name of the user. |
| * |
| * @param pwd the password of the user. |
| * |
| * @throws Failure if the user is already logged in, name or pwd don't |
| * match authentication database, or if the user doesn't have the right |
| * to utilize the service. |
| */ |
| @Authorize( true ) |
| void login( string name, string pwd ) throws Failure |
| |
| /** |
| * Marks the user as logged out. |
| */ |
| @Authorize( true ) |
| void logout() |
| |
| /** |
| * Checks if a user is logged in. |
| * |
| * @return true if a user is logged in. |
| */ |
| @Authorize( true ) @Direction( Both ) |
| boolean isLoggedIn() |
| |
| ////////// |
| // CHAT // |
| ////////// |
| |
| /** |
| * Reports the set of online users upon login. |
| * |
| * @param names the set of online users. |
| */ |
| @Oneway @Direction( Client ) |
| void whoIsOnline( string[] names ) |
| |
| /** |
| * Reports a status change of a user. |
| * |
| * @param name the name of the user. |
| * |
| * @param online true if they are now online. |
| */ |
| @Oneway @Direction( Client ) |
| void statusChange( string name, boolean online ) |
| |
| /** |
| * Sends a message to or from the named user. |
| * |
| * @param who the name of the recipient or the sender |
| * depending upon the direction. |
| * |
| * @param msg the message to send. |
| * |
| * @throws Failure if the user is not online. |
| */ |
| @Direction( Both ) @AsyncReceiver( Queued ) |
| void send( string who, string msg ) throws Failure |
| } |