blob: 7e9a4cc567fd944e86906db3715903d7dae9e694 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
# Distributed Shared Objects for Android
A platform that provides shared objects for ad-hoc networks of Android devices.
## Goal
Fault-tolerant, distributed, fast synchronization of application state across
several Android phones. A suitable library for programmers to interact with the
system.
## Feature list
An incomplete list of implemented and planned features.
* Fault-tolerance with automatic master selection. (Planned)
* Network discovery with directory service. (Planned)
* Ability to share variables with other peers. (Implemented, 0.1)
* Network discovery with UDP broadcast. (Implemented, 0.1)
## Example
With Same you can share variables easily, like so:
```Java
// First: Some setup to get all your devices connected to the same network.
// Then, in your Activity:
ClientInterfaceBridge client = new ClientInterfaceBridge(this);
client.connect();
try {
// A VariableFactory is used to create distributed objects.
VariableFactory variableFactory = client.createVariableFactory();
Variable<String> myVariable = variableFactory.createString("MyVariable");
// Set the variable. It is automatically distributed to your other devices.
myVariable.set("Hello, Same!");
// Run update() to get the most recent version.
myVariable.update();
// Get the current value.
Log.i("The current value is: " + myVariable.get());
} finally {
// Always remember to disconnect.
client.disconnect();
}
```
## Release log
Pre-1.0: A release is a milestone in the project. Whenever the system seems to
be working fairly well, a commit is tagged as the release version.
### Next release
* Better discovery service.
* Better controller activity on Android. Ability to shut down master.
* Fix lookup bug with duplicate network names.
### 0.5
* Tag: 0.5
* Add timeouts to outgoing RPCs. (Actually a protobuf-simple-rpc feature)
* Master takeover works again.
* Timed out queries to old master doesn't interfere with master election.
### 0.4
* Tag: 0.4.
* Use protocol buffer services based on [protobuf-simple-rpc](https://github.com/orbekk/protobuf-simple-rpc).
* Advertise new master. => New clients can join the network.
* Kill SameService if SameController fails. (E.g. when binding Jetty).
* Known issue: Master takeover doesn't work anymore.
### 0.3
* Tag: 0.3
* Centralized network discovery: Enables network discovery on networks that
don't support UDP broadcasts.
* Master takeover: When the master dies, another client takes over.
This version does not recover inconsistent state.
This version does not advertise the new master URL.
* UDP broadcast discovery no longer supported. Uses centralized discovery only.
### 0.2
* Tag: 0.2-new-main-screen
* Many Android related bugs were fixed. App is generally stable.
* More sophisticated state handling in the demo Activities.
* Benchmark activity shows reasonable performance on Galaxy S.
* README file that makes sense.
### 0.1
* Tag: working-graphics-0.1
* An interactive graphics demo with several participants.
* Web management on http://ip:port/_/state
|