This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
uf:guanotes [2008/09/26 13:55] elisag |
uf:guanotes [2009/11/18 15:12] elisag |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Guanotes ====== | ||
- | ==== The concept==== | ||
- | |||
- | Guanotes application allows flockrs to post notes, called guanotes, to the ambient ( i.e any device available in the surroundings ranging from other flockr device to devices installed on public places such as KK). This is a concept similar to Stickies application in Mac but guanotes can hop from one device to another. | ||
- | |||
- | Flockrs can thus discover other flockrs guanotes, store them and exchange them later with other flockrs such that guanotes can be percolated through the entire Urbiflock. | ||
- | |||
- | Flockrs can also subscribe to a particular type of guanotes such that they are automatically notified whenever they meet a flockr carrying guanotes of that particular type. | ||
- | |||
- | Another idea is that flockrs can stop the percolation of guanotes. For example, if a flockr detects that a spam guanote or a guanote with unapropiate content, it could stop its propagation. | ||
- | |||
- | ==== Design ==== | ||
- | |||
- | To implement Guanotes, we are going to reuse the concepts developed by [[http:// | ||
- | |||
- | The idea is to build a framework similar to TOTA, called AmbientTOTA, | ||
- | |||
- | Here comes the primitive operations to interact with the AmbientTota framework: | ||
- | |||
- | < | ||
- | //publishes a tuple into the ambient ( ~ inject in TOTA) | ||
- | def inject(tuple) { | ||
- | export: tuple as: Tuple | ||
- | }; | ||
- | |||
- | // places a listener on to the local TS ( ~ subscribe in TOTA) | ||
- | // it returns a publication object to be able to unsusbscribe | ||
- | when: template matches:{ | tuple | | ||
- | | ||
- | } | ||
- | |||
- | //Templates are currently boolean expressions on tuples. Example of template applied to guanotes: | ||
- | { |guanote| | ||
- | </ | ||
- | |||
- | A tuple in our system is just the object contained in a local TS offering the following API to propagate itself: | ||
- | |||
- | < | ||
- | // called in every tuple at pass() | ||
- | def decidePropagation() -> boolean | ||
- | // specifies operations on the local TS | ||
- | def doAction (); | ||
- | // specifies operations on the tuple itself | ||
- | def changeTupleContent() -> tuple | ||
- | // if true -> note gets added to local TS | ||
- | def decideStore () -> boolean | ||
- | // if true -> tuple gets unexported and deleted from local TS. | ||
- | *def decideDie() -> boolean | ||
- | </ | ||
- | |||
- | (* new operation not in TOTA) |