Crowd Design -*- outline -*- * Introduction The Crowd layer builds upon the Presents layer through the addition of a few key services. These services are based around the concept of bodies and places. A client of the system is represented by a body and that body can occupy a place. Bodies can communicate with one another through two mechanisms: they can speak which broadcasts their message to all other bodies that occupy the same place, or they can tell which delivers their message specifically to one target body regardless of place. Services are provided for switching from place to place as a body can only occupy one place at a time (or no places at all). A framework is provided for management of places on the server. Most applications will likely want to specialize the place concept and extend it with functionality specific to their needs. * Components Wherein the individual classes and components that make up the Crowd framework are described. ** BodyObject The body object extends the client object from the Presents framework and tracks information like the current place occupied by the body. ** PlaceObject, PlaceManager An instance of place object represents a particular place and tracks information pertinent to that place, like what bodies currently occupy it. Every place has an associated place manager which lives on the server and coordinates services for that place. It can be extended to coordinate services for place specializations. ** ChatService, ChatProvider, ChatReceiver These three classes coordinate and manage communication between bodies.