uf:totam
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revisionNext revisionBoth sides next revision | ||
uf:totam [2009/11/18 14:44] – created elisag | uf:totam [2010/01/21 17:39] – elisag | ||
---|---|---|---|
Line 6: | Line 6: | ||
Instead, we have designed a dedicated communication abstraction for flock communication called //TOTAM//. | Instead, we have designed a dedicated communication abstraction for flock communication called //TOTAM//. | ||
+ | ==== Design ==== | ||
+ | The original idea was to build a framework similar to [[http:// | ||
+ | |||
+ | However, in TOTA tuples are sent to all communication partners in range. Upon arrival at the receiver side, the tuple itself decides whether it has to be stored in that tuple space. By transmitting tuples potential malicious or non-intended users are provided with sensitive information. Not only does sending all tuples blindly to all communication partners in range raise privacy issues, it also creates a network traffic overhead. | ||
+ | |||
+ | To solve this issues, we extended TOTA with dynamically scoped tuples resulting in the TOTAM (" | ||
+ | |||
+ | Another goal was to implement TOTAM as a general framework so that we can then instantiate our TOTAM with guanote objects for the [[: | ||
+ | |||
+ | ==== API ==== | ||
+ | |||
+ | Here comes the public interface to interact with an AmbientTota framework: | ||
+ | |||
+ | < | ||
+ | makeTupleSpace() | ||
+ | makeTuple(tupleID) | ||
+ | extendTuple: | ||
+ | </ | ||
+ | |||
+ | A tuple space (ts) in AmbientTota basically consists of a local ts, an ambient ts (to inject tuples in the ambient). The public interface of an ts is the following: | ||
+ | |||
+ | < | ||
+ | // tota operations to manage a local ts | ||
+ | def add(tuple) | ||
+ | def delete(template) -> vector with the deleted tuples | ||
+ | matching the template | ||
+ | def read(template) -> vector with the matching tuples | ||
+ | |||
+ | //publishes a tuple into the ambient ( ~ inject in TOTA) | ||
+ | def inject(tuple) -> subscription object to cancel the injection | ||
+ | |||
+ | // 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 | | ||
+ | // code | ||
+ | } | ||
+ | //Templates are currently boolean expressions on tuples. | ||
+ | Example of template applied to guanotes: | ||
+ | { |guanote| | ||
+ | |||
+ | //methods belonging to the propagation protocol | ||
+ | |||
+ | // notifies the discovery of a remote ts | ||
+ | // and starts the propagation protocol (send side) | ||
+ | def notifyTSDiscovered(ts) | ||
+ | // notifies the arrival of tuples from a ts | ||
+ | // receive side of the propagation protocol | ||
+ | def receiveTyples(tuples) | ||
+ | </ | ||
+ | |||
+ | 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. | ||
+ | //new operation not in TOTA | ||
+ | def decideSleep() -> boolean | ||
+ | </ | ||
+ | |||
+ | Ideas: | ||
+ | |||
+ | TOTA could be combined with the RETE engine we built for the characteristic functions, in the future to reason about multiple tuples. | ||
+ | |||
+ | decideSleep() is there for discontinuous decidePropagation functions. for example, tuples that should be only propagated every Tuesday could not implemented with TOTA because the propagation protocol only gets called once. We change this by providing decideSleep() that gets called when you decide not to propagate. Like this a tuple can still be propagate at a later point in time, despite the fact that the decidePropagation function has evaluated to false at a certain moment. |
uf/totam.txt · Last modified: 2021/09/24 10:49 by elisag