Commit Graph

216 Commits

Author SHA1 Message Date
Ray Greenwell cbb661337f Just check if the message event is private.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4650 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-04-06 20:53:49 +00:00
Ray Greenwell 5843ce777c Only attempt to call a method on the manager if the received event
is a ServerMessageEvent.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4649 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-04-06 20:46:15 +00:00
Michael Bayne 09f0bee0f3 Yet more header patrol.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4602 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-24 00:39:27 +00:00
Michael Bayne c25024f497 Move some low-level object access control into Presents from Crowd (default all
objects to non-modifiable, restrict client object subscriptions to the client
in question). Modified Peer code to not log a warning when a peer is not online
in an expected way (not listening for connections).


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4598 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-23 19:41:30 +00:00
Michael Bayne ebc99935d5 If we're going to do this, I guess we're going to do it properly. Nixed the
notion of a global group (though we implicitly define one in InvocationCodes)
added a mechanism for directors (which generally handle the client side of
invocation services) to register their interest in bootstrap service groups so
that the whole goddamned complex business can happen magically behind the
scenes.

If you instantiate a director, it will automatically register interest in the
service group it needs and everything will work. If you don't use the director
code, you don't get the services and you can safely exclude all of that code
from your client even though the services are still in use on the server (and
presumably used by some other types of clients).

This is going to break all the builds, which I'll soon fix. Then I'll go write
all this in ActionScript. Yay!


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4552 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-02-11 01:17:30 +00:00
Dave Hoover 5622bc271b Actually substitute keywords (these files are chock full of stale $Id$ tags)
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4509 542714f4-19e9-0310-aa3c-eee0fc999fb1
2007-01-24 00:22:07 +00:00
Michael Bayne 737bca0a98 Have where() use which().
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4463 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-11-28 18:24:25 +00:00
Ray Greenwell 776761aeef Allow the occupant info to be different depending on the place.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4457 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-11-17 20:01:36 +00:00
Michael Bayne 4694c1ce17 Just who() is fine, we don't need the whole user object dumped.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4445 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-11-07 01:40:23 +00:00
Michael Bayne 35082bbaca New and improved lint removal.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4438 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-26 23:00:20 +00:00
Michael Bayne 20c0f0ff3d Regenerated with updated Marshaller and Dispatcher templates.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4398 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-10-04 18:13:34 +00:00
Michael Bayne 6a47c766cc Switched to a better name.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4345 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-08-24 18:42:22 +00:00
Michael Bayne b4d66588c1 Added some magic on the road toward more elegant support for dynamic languages
like Groovy and JRuby. Created a DynamicEventDispatcher that automatically maps
attribute, element and set events to methods. Say you have a field:

  public DSet occupantInfo;

you can create a method in any class:

  public void occupantInfoAdded (BodyObject source, OccupantInfo entry);

and then bind that class as a listener using the dynamic event dispatcher:

  _myobj.addListener(new DynamicEventDispatcher(object));

I also created a nicer replacement for the MessageHandler system which is
clunky but still way simpler than using a full InvocationService. Basically we
dispatch MessageEvent as if it were a method call. 

For example, in AtlantiManager I define:

    public void placeTile (BodyObject placer, AtlantiTile tile)

which receives a request by a player to place a tile on their turn. Then in
AtlantiController, I simply call:

   _atlobj.manager.invoke("placeTile", tile);

Of course, in JRuby and Groovy, that's going to look like:

   _atlobj.manager.placeTile(tile);

which is all part of the fun.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4344 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-08-24 17:35:32 +00:00
Michael Bayne bc9f53396c Revamped distributed object creation. There was no particular reason to create
distributed objects by reflection since we don't allow clients to create
objects, furthermore we needn't do it asynchronously. The object creation
methods were moved into the server-side only interface and made "immediate", so
the caller creates a derived instance of DObject and registers it with the
system instead of creating it with a Subscriber callback.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4342 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-08-23 23:46:48 +00:00
Mike Thomas 3d7c12a5d1 Allow a little more info in deciding whether to declare the place empty.
Also, while I was in there, added some safety so we don't lose track of shutdownIntervals and let them run amuck.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4295 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-07-28 21:16:37 +00:00
Mike Thomas 19219bb1a3 Break out the logic for whether the place is empty so we can override it.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4280 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-07-20 01:28:29 +00:00
Michael Bayne 05cef39f63 Revamped chat handling a bit:
- the ChatProvider is now a proper singleton rather than providing static
methods for everything (it is accessed through CrowdServer.chatprov)
- it can now be extended to create a custom UserMessage for tells (which can
contain avatar information on systems that want to show an avatar on the
receipt of a tell)
- the ChatProvider API was tidied up a bit as some methods had been addded over
time that were not sufficiently general purpose so their callers will be
changed to use the general purpose APIs.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4251 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-07-06 00:22:12 +00:00
Michael Bayne bdadd2377e Behold, TAPOAFTSM! The Awesome Power Of A Fully Type-Safe Mothership.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4246 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-07-05 00:56:16 +00:00
Michael Bayne 33a758dfce The basis of cluster support for Presents servers. All servers in a cluster
make connections to other servers in the cluster and can exchange events (in a
limited fashion).

This is different than Liz's project wherein servers share an oid space and one
can interchangably work with distributed objects from any server. This package
provides a means by which certain services (by default, presence and chat) can
be communicated between servers to allow communication between players
scattered around a bunch of otherwise independent server instances.

This is less general purpose but also less likely to encourage people to write
code that tightly couples multiple servers and then falls over because it
generates gobs of network traffic as events are flung willy nilly behind the
scenes.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4238 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-07-01 00:19:59 +00:00
Michael Bayne 78a8d6fe62 Nix superfluous log message.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4198 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-06-17 23:12:21 +00:00
Ray Greenwell 79c6427c21 StringBuffer -> StringBuilder.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4191 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-06-13 22:42:20 +00:00
Ray Greenwell 26c928fc45 Use the valueOf factory methods pretty much everywhere.
These are the preferred way to get instances of Boolean, Byte,
Short, Character, Integer, Long, Float, and Double object.
It's always made sense for Boolean objects, and with 1.5 these factory
methods were blessed as the proper way to get instances unless one
absolutely needed a distinct object.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4145 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-05-24 01:24:24 +00:00
Michael Bayne 0699eb3d1c Added a standard mechanism for customizing the AccessController on a
PlaceObject. Created a default AccessController that is slightly more strict
than the CrowdServer-wide default in that it only allows place occupants to
subscribe to a PlaceObject (a motivated and resourceful player could otherwise
listen in on place chat everywhere in the game if they so desired; with a
custom client, of course).


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4079 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-04-30 19:16:05 +00:00
Michael Bayne 58cbfb6db1 Regenerated using the new Ant-task-based generator.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3914 542714f4-19e9-0310-aa3c-eee0fc999fb1
2006-03-06 21:51:59 +00:00
Michael Bayne d57adeca1c Big fat bernie OccupantInfo revamp. Now:
- OccupantInfo is created by the BodyObject
- the BodyObject is passed to the OI constructor and it uses information
  therefrom to configure itself
- the PlaceManager are no longer responsible for indicating the type of
  OccupantInfo to use or how to populate it.

This makes much more sense as the same type of OccupantInfo is generally used
across the entire system and it's annoying to have to have every PlaceMaanger
derived class know the type of OccupantInfo to create and know how to
initialize it. The one drawback is that only information from the BodyObject
can be used to populate the OccupantInfo, unpublished server-side only
information cannot be used (unless its stuffed into a transient field in the
BodyObject).


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3774 542714f4-19e9-0310-aa3c-eee0fc999fb1
2005-12-03 03:05:06 +00:00
Ray Greenwell 38ee3ae362 When a place is loaded, immediately schedule an unload in the future, if
applicable, as it will only otherwise get checked when users leave the place.
It's possible that we'll load and nobody will ever enter.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3763 542714f4-19e9-0310-aa3c-eee0fc999fb1
2005-11-17 03:29:24 +00:00
Michael Bayne 176329e1ed Various updates to allow a system where a user's visible name is not the same
as their authentication name (which we leave in BodyObject.username). This
turns out to be simpler than the system we adopted for Yohoho wherein we
replace the player's user object after they select a character, but converting
to this sort of system is way more work than would be worth it.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3758 542714f4-19e9-0310-aa3c-eee0fc999fb1
2005-11-10 23:18:58 +00:00
Ray Greenwell de892e0187 Catch exceptions in a few tender places during creation of a place and try
to log information.
There was an exception in here somewhere that froze a big tourney last week
but the stack trace was optimized out by hotspot (damn thee!). Hopefully
this will at least narrow it down, and possibly prevent total brokenness.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3681 542714f4-19e9-0310-aa3c-eee0fc999fb1
2005-08-12 22:22:13 +00:00
Ray Greenwell 3820456813 Allow subclasses to not create a speak service if they should so desire.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3644 542714f4-19e9-0310-aa3c-eee0fc999fb1
2005-07-06 17:47:51 +00:00
Michael Bayne a213847eea Added leavePlace() for games where you are sometimes not in any "place" at
all.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3638 542714f4-19e9-0310-aa3c-eee0fc999fb1
2005-06-30 00:02:13 +00:00
Andrzej Kapolka 9213b23ce1 Added ratifyBodyEntry to PlaceManager.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3561 542714f4-19e9-0310-aa3c-eee0fc999fb1
2005-05-17 21:53:53 +00:00
Michael Bayne 4757af99c6 No longer needed.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3555 542714f4-19e9-0310-aa3c-eee0fc999fb1
2005-05-16 22:08:16 +00:00
Ray Greenwell a2b8874f46 Allow the userobject access controller to be overridden by ye subclasses.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3554 542714f4-19e9-0310-aa3c-eee0fc999fb1
2005-05-16 18:33:57 +00:00
Michael Bayne ff3012c5f9 Implement sensible default object access policies at the Crowd level (no
one can modify anything, a select few events are allowed on the body
object by the body object's owner only).


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3553 542714f4-19e9-0310-aa3c-eee0fc999fb1
2005-05-16 05:17:05 +00:00
Ray Greenwell 5290ab7c1d Pass the mode to the speaker validator.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3429 542714f4-19e9-0310-aa3c-eee0fc999fb1
2005-03-27 20:16:59 +00:00
Michael Bayne 2d19a0ba82 Renamed DSet.entries() -> DSet.iterator().
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3406 542714f4-19e9-0310-aa3c-eee0fc999fb1
2005-03-15 02:12:03 +00:00
Michael Bayne 01592d2593 Reorganized basic permissions handling to be more cleanly extensible.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3375 542714f4-19e9-0310-aa3c-eee0fc999fb1
2005-03-02 03:22:27 +00:00
Michael Bayne 44f2a29f4f Regenerated with updated copyright information.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3365 542714f4-19e9-0310-aa3c-eee0fc999fb1
2005-02-22 18:56:52 +00:00
Michael Bayne d2ea985abb Regenerated invocation receivers; fixing a javadoc booch in the process.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3311 542714f4-19e9-0310-aa3c-eee0fc999fb1
2005-01-24 23:13:00 +00:00
Michael Bayne 93ef73095e Make it possible for external entities to add delegates.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3301 542714f4-19e9-0310-aa3c-eee0fc999fb1
2005-01-14 17:06:23 +00:00
Ray Greenwell bd80c348eb The great Interval revamp.
There is no more SafeInterval, instead Intervals can be constructed with a RunQueue to use for expiring.
PresentsDObjectMgr implements RunQueue.
Client has a getRunQueue() method to get the client side RunQueue.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3283 542714f4-19e9-0310-aa3c-eee0fc999fb1
2004-12-22 19:23:00 +00:00
Michael Bayne aeff9e61cf Not having a client is not a warnable offense. All server only
"characters" (NPPs in Yohoho) have no client.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3270 542714f4-19e9-0310-aa3c-eee0fc999fb1
2004-12-10 19:16:57 +00:00
Michael Bayne a6d7764e29 More custom classloader support. We now have a proof-of-concept working so
it's unlikely that the rabbit hole will surprise us with further depth.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3269 542714f4-19e9-0310-aa3c-eee0fc999fb1
2004-12-10 02:54:26 +00:00
Michael Bayne c92a922678 The rabbit hole goes deeper. Now we can configure the client with a custom
classloader to use when unserializing objects off the network. Also fixed
the way custom classloaders were used as Class.forName(class, true,
loader) seems to be the proper way to go to have caching work and whatnot.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3268 542714f4-19e9-0310-aa3c-eee0fc999fb1
2004-12-10 01:23:44 +00:00
Michael Bayne f16beaa0a1 Allow custom classloaders to be used when loading PlaceManager
implementations and their ilk.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3267 542714f4-19e9-0310-aa3c-eee0fc999fb1
2004-12-10 00:41:38 +00:00
Michael Bayne 5f7409307f Allow a derived place registry to be used.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3266 542714f4-19e9-0310-aa3c-eee0fc999fb1
2004-12-10 00:27:31 +00:00
Michael Bayne a04e23e025 Regenerated our marshaller and dispatcher classes with the new Java-based
generator. It handles inner classes slightly differently and prepends a
project-specific header to the generated classes.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3239 542714f4-19e9-0310-aa3c-eee0fc999fb1
2004-11-25 04:47:40 +00:00
Michael Bayne 254e60811e Removed our temporary code as we have figured said things out.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3234 542714f4-19e9-0310-aa3c-eee0fc999fb1
2004-11-24 20:37:36 +00:00
Ray Greenwell a9ccfc8553 Don't NPE during normal operation!
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3227 542714f4-19e9-0310-aa3c-eee0fc999fb1
2004-11-23 00:41:58 +00:00
Michael Bayne 4cdcec6149 Do some hackery until we figure out where AuthUserObjects are getting
mapped into the client table without mogrified names.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3226 542714f4-19e9-0310-aa3c-eee0fc999fb1
2004-11-23 00:17:46 +00:00