diff --git a/docs/crowd/design.txt b/docs/crowd/design.txt new file mode 100644 index 000000000..1bb9a5ddc --- /dev/null +++ b/docs/crowd/design.txt @@ -0,0 +1,34 @@ +Cocktail: Party Design -*- outline -*- + +* Introduction +The Party layer builds upon the Cher 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 Party +framework are described. + +** BodyObject +The body object extends the client object from the Cher 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.