Differences

This shows you the differences between the selected revision and the current version of the page.

uf:flockr 2008/09/04 15:55 uf:flockr 2009/11/30 16:49 current
Line 1: Line 1:
==== Flockr ==== ==== Flockr ====
 +
 +A flockr represents a user in the framework. A flockr has exactly one profile and can create and be registered to multiple flocks. In addition, a flockr can have multiple installed applications. A flockr is also the gateway that remote parties can use to get information about the user.
Each Flockr contains following info : Each Flockr contains following info :
-  * [[Profile]]  +  * [[profiles|Profile]]  
-  * list of its [[Flock]]s where it is registered. +  * list of its [[Flock|flock]]s where it is registered.
    * Note: maybe it should be stored in the profile.     * Note: maybe it should be stored in the profile.
-  * list of its [[Flock]]s. +  * list of its [[Flock|flock]]s. 
-    * predefined [[Flock]]s. +    * predefined [[Flock|flock]]s ( e.g. buddyList)
-    * user-defined [[Flock]]s.+    * user-defined [[Flock|flock]]s
 +  * list of [[Proximities]] that are registered for this Flockr. 
 +  * list of its [[Application|applications]]. 
 +  * a map of usernames to far refs to connected flockrs. 
 + 
 +A Flockr has a local and remote interface. The remote interface is the entity that gets exported to the ambient.  
 + 
 +Profile won't get exported to the ambient but it has to proactively asked to the Flockr. This allows: 1) Remote Flockr does not need to ask the [[profiles|Profile]] again (if you rediscover the Flockr) if it didn't change and 2) allow the Flockr to decide who can actually see its [[profiles|Profile]]. 
 + 
 +The remote interface receives 3 types events from the network (join, left and changeProfile) and notifies the local interface of the Flockr which notifies the necessary [[Proximities]] objects.   
 + 
 +The local interface contains also receives the events on changes on the buddyList. 
 + 
 +The buddyList is a list of its friends Flockrs. The editor for [[Flock|flock]]s will allow that the [[profiles|Profile]] can be consulted offline. When a Flockr is connected for which there is a cached [[profiles|Profile]], he should propagate the necessary changed events to make sure that both the cached Profile and the Flocks of the other Flockrs are updated.
-A Flockr should have a local and remote interface. +  * xtof suggestion to implement this:  
 +    * Make "cached" object abstraction. It is just a proxy object which forwards to the online version when it's online, otherwise the catched version. Every update, replaces the cached version with a clone. In other words, keeps a cached object that gets updated when you are connected. 
 +    * This abstraction could be used for any list of Flockrs that need offline Profile visualization. Maybe useful also for applications.
-The remote interface is the entity that gets exported to the ambient which at least contains: +Other Comments:
- * [[Profile]] +
- * predefined [[Flock]]s +
[[Flockr]] actually should be able to decide who can see him. How? maybe Profile? [[Flockr]] actually should be able to decide who can see him. How? maybe Profile?
-   
-The local interface receives the 3 types events from the discovery. 
-Not sure where to place: list of its friends [[Flockr]]s such that the [[Profile]] can be consulted offline. When a Flockr is connected for which there is a cached [[Profile]], he should propagate the necessary changed events to make sure that both the cached Profile and the Flocks of the other Flockrs are updated.  +===== API =====
 +  * Local Interface
 +    <code>
 +    registerProximity(proximityObj)
 +    friendAdded(uid,flockr) 
 +    friendRemoved(uid,flockr)
 +    </code>
-==== API ====+  * Remote Interface 
 +    <code>  
 +    joined(uid,flockr)  
 +    left(uid,flockr)  
 +    changedProfile(uid,flockr,updatedProfile) 
 +    getProfile()  
 +    </code>
 
 
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki