Moved parlor invocation service codes into ParlorCodes. Started work on

server side of parlor invocation services.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@370 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Michael Bayne
2001-10-01 22:17:34 +00:00
parent 64bed2eb12
commit a2f4a2cb7a
6 changed files with 106 additions and 50 deletions
@@ -0,0 +1,36 @@
//
// $Id: ParlorCodes.java,v 1.1 2001/10/01 22:17:34 mdb Exp $
package com.threerings.parlor.client;
import com.threerings.cocktail.cher.client.InvocationCodes;
/**
* Contains codes used by the parlor invocation services.
*/
public interface ParlorCodes extends InvocationCodes
{
/** The module name for the parlor services. */
public static final String MODULE_NAME = "parlor";
/** The message identifier for an invitation creation request or
* notification. */
public static final String INVITE_ID = "Invite";
/** The message identifier for an invitation cancellation request or
* notification. */
public static final String CANCEL_INVITE_ID = "CancelInvite";
/** The message identifier for an invitation response request or
* notification. */
public static final String RESPOND_INVITE_ID = "RespondInvite";
/** The response code for an accepted invitation. */
public static final int INVITATION_ACCEPTED = 0;
/** The response code for a refused invitation. */
public static final int INVITATION_REFUSED = 1;
/** The response code for a countered invitation. */
public static final int INVITATION_COUNTERED = 2;
}
@@ -1,5 +1,5 @@
//
// $Id: ParlorDirector.java,v 1.3 2001/10/01 06:19:15 mdb Exp $
// $Id: ParlorDirector.java,v 1.4 2001/10/01 22:17:34 mdb Exp $
package com.threerings.parlor.client;
@@ -19,6 +19,7 @@ import com.threerings.parlor.util.ParlorContext;
* that started.
*/
public class ParlorDirector
implements ParlorCodes
{
/**
* Constructs a parlor director and provides it with the parlor
@@ -90,8 +91,7 @@ public class ParlorDirector
// generate the invocation service request
ParlorService.respond(_ctx.getClient(), invite.remoteId,
ParlorService.INVITATION_ACCEPTED,
null, this);
INVITATION_ACCEPTED, null, this);
}
/**
@@ -114,8 +114,7 @@ public class ParlorDirector
// generate the invocation service request
ParlorService.respond(_ctx.getClient(), invite.remoteId,
ParlorService.INVITATION_REFUSED,
message, this);
INVITATION_REFUSED, message, this);
}
/**
@@ -146,8 +145,7 @@ public class ParlorDirector
// generate the invocation service request
ParlorService.respond(_ctx.getClient(), invite.remoteId,
ParlorService.INVITATION_COUNTERED,
config, this);
INVITATION_COUNTERED, config, this);
}
/**
@@ -220,9 +218,9 @@ public class ParlorDirector
*
* @param remoteId the unique indentifier for the invitation.
* @param code the response code, either {@link
* ParlorService#INVITATION_ACCEPTED} or {@link
* ParlorService#INVITATION_REFUSED} or {@link
* ParlorService#INVITATION_COUNTERED}.
* ParlorCodes#INVITATION_ACCEPTED} or {@link
* ParlorCodes#INVITATION_REFUSED} or {@link
* ParlorCodes#INVITATION_COUNTERED}.
* @param arg in the case of a refused invitation, a string
* containing a message provided by the invited user explaining the
* reason for refusal (the empty string if no explanation was
@@ -251,16 +249,16 @@ public class ParlorDirector
// notify the observer
try {
switch (code) {
case ParlorService.INVITATION_ACCEPTED:
case INVITATION_ACCEPTED:
invite.observer.invitationAccepted(invite.inviteId);
break;
case ParlorService.INVITATION_REFUSED:
case INVITATION_REFUSED:
invite.observer.invitationRefused(
invite.inviteId, (String)arg);
break;
case ParlorService.INVITATION_COUNTERED:
case INVITATION_COUNTERED:
invite.observer.invitationCountered(
invite.inviteId, (GameConfig)arg);
break;
@@ -275,7 +273,7 @@ public class ParlorDirector
// unless the invitation was countered, we can remove it from the
// pending table because it's resolved
if (code != ParlorService.INVITATION_COUNTERED) {
if (code != INVITATION_COUNTERED) {
_pendingInvites.remove(remoteId);
}
}
@@ -1,5 +1,5 @@
//
// $Id: ParlorService.java,v 1.3 2001/10/01 06:19:15 mdb Exp $
// $Id: ParlorService.java,v 1.4 2001/10/01 22:17:34 mdb Exp $
package com.threerings.parlor.client;
@@ -19,32 +19,8 @@ import com.threerings.parlor.data.GameConfig;
*
* @see ParlorDirector
*/
public class ParlorService
public class ParlorService implements ParlorCodes
{
/** The module name for the parlor services. */
public static final String MODULE = "parlor";
/** The message identifier for an invitation creation request or
* notification. */
public static final String INVITE_ID = "Invite";
/** The message identifier for an invitation cancellation request or
* notification. */
public static final String CANCEL_INVITE_ID = "CancelInvite";
/** The message identifier for an invitation response request or
* notification. */
public static final String RESPOND_INVITE_ID = "RespondInvite";
/** The response code for an accepted invitation. */
public static final int INVITATION_ACCEPTED = 0;
/** The response code for a refused invitation. */
public static final int INVITATION_REFUSED = 1;
/** The response code for a countered invitation. */
public static final int INVITATION_COUNTERED = 2;
/**
* You probably don't want to call this directly, but want to generate
* your invitation request via {@link ParlorDirector#invite}. Requests
@@ -68,7 +44,7 @@ public class ParlorService
Object[] args = new Object[] { invitee, config };
Log.info("Sending invite request [to=" + invitee +
", cfg=" + config + "].");
return invmgr.invoke(MODULE, INVITE_ID, args, rsptarget);
return invmgr.invoke(MODULE_NAME, INVITE_ID, args, rsptarget);
}
/**
@@ -102,7 +78,8 @@ public class ParlorService
args[2] = (arg == null) ? "" : arg;
Log.info("Sending invitation response [inviteId=" + inviteId +
", code=" + code + ", arg=" + arg + "].");
return invmgr.invoke(MODULE, RESPOND_INVITE_ID, args, rsptarget);
return invmgr.invoke(
MODULE_NAME, RESPOND_INVITE_ID, args, rsptarget);
}
/**
@@ -124,6 +101,6 @@ public class ParlorService
Object[] args = new Object[] { new Integer(inviteId) };
Log.info("Sending invitation cancellation " +
"[inviteId=" + inviteId + "].");
return invmgr.invoke(MODULE, CANCEL_INVITE_ID, args, rsptarget);
return invmgr.invoke(MODULE_NAME, CANCEL_INVITE_ID, args, rsptarget);
}
}
@@ -1,5 +1,5 @@
//
// $Id: GameConfig.java,v 1.2 2001/10/01 06:19:15 mdb Exp $
// $Id: GameConfig.java,v 1.3 2001/10/01 22:17:34 mdb Exp $
package com.threerings.parlor.data;
@@ -19,7 +19,7 @@ import com.threerings.cocktail.cher.io.Streamable;
* <p> The game config object is also the mechanism used to instantiate
* the appropriate game manager and controller. Every game must have an
* associated game config derived class that overrides {@link
* #getControllerClass} and {@link getManagerClassName}, returning the
* #getControllerClass} and {@link #getManagerClassName}, returning the
* appropriate game controller and manager class for that game. Thus the
* entire chain of events that causes a particular game to be created is
* the construction of the appropriate game config instance which is
@@ -1,12 +1,15 @@
//
// $Id: ParlorManager.java,v 1.1 2001/10/01 02:56:35 mdb Exp $
// $Id: ParlorManager.java,v 1.2 2001/10/01 22:17:34 mdb Exp $
package com.threerings.parlor.server;
import com.samskivert.util.Config;
import com.threerings.cocktail.cher.server.InvocationManager;
import com.threerings.parlor.client.ParlorService;
import com.threerings.cocktail.party.data.BodyObject;
import com.threerings.parlor.client.ParlorCodes;
import com.threerings.parlor.data.GameConfig;
/**
* The parlor manager is responsible for the parlor services in
@@ -16,6 +19,7 @@ import com.threerings.parlor.client.ParlorService;
* game.
*/
public class ParlorManager
implements ParlorCodes
{
/**
* Initializes the parlor manager. This should be called by the server
@@ -30,6 +34,25 @@ public class ParlorManager
{
// register our invocation provider
ParlorProvider pprov = new ParlorProvider(this);
invmgr.registerProvider(ParlorService.MODULE, pprov);
invmgr.registerProvider(MODULE_NAME, pprov);
}
/**
* Issues an invitation from the <code>inviter</code> to the
* <code>invitee</code> for a game as described by the supplied config
* object.
*
* @param inviter the player initiating the invitation.
* @param invitee the player being invited.
* @param config the configuration of the game being proposed.
*
* @return the <code>SUCCESS</code> constant if the invitation was
* accepted and delivered, or a string describing the reason for
* failure if it was rejected.
*/
public String invite (BodyObject inviter, BodyObject invitee,
GameConfig config)
{
return SUCCESS;
}
}
@@ -1,11 +1,13 @@
//
// $Id: ParlorProvider.java,v 1.2 2001/10/01 05:07:13 mdb Exp $
// $Id: ParlorProvider.java,v 1.3 2001/10/01 22:17:34 mdb Exp $
package com.threerings.parlor.server;
import com.threerings.cocktail.cher.server.InvocationProvider;
import com.threerings.cocktail.party.data.BodyObject;
import com.threerings.cocktail.party.server.PartyServer;
import com.threerings.parlor.client.ParlorCodes;
import com.threerings.parlor.data.GameConfig;
/**
@@ -13,7 +15,8 @@ import com.threerings.parlor.data.GameConfig;
* services that are made available for direct invocation by the client.
* Primarily these are the matchmaking mechanisms.
*/
public class ParlorProvider extends InvocationProvider
public class ParlorProvider
extends InvocationProvider implements ParlorCodes
{
/**
* Constructs a parlor provider instance which will be used to handle
@@ -36,6 +39,25 @@ public class ParlorProvider extends InvocationProvider
public void handleInviteRequest (
BodyObject source, int invid, String invitee, GameConfig config)
{
String rsp = null;
// ensure that the invitee is online at present
BodyObject target = PartyServer.lookupBody(invitee);
if (target == null) {
rsp = "m.not_online\t" + invitee;
} else {
// if they are, submit the invite request to the parlor
// manager
rsp = _pmgr.invite(source, target, config);
}
// now send the response
if (rsp.equals(SUCCESS)) {
sendResponse(source, invid, "InviteReceived");
} else {
sendResponse(source, invid, "InviteReceived");
}
}
/**