Distributed Shared Objects for Android
Java Shell
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
directory
same-android
same
statserver
.gitignore
COPYING.txt
README.md

README.md

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. (0.6)
  • Network discovery with directory service. (0.3)
  • Ability to share variables with other peers. (Implemented, 0.1)

Example

With Same you can share variables easily, like so:

// 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.

0.6.1

  • Tag: 0.6.1
  • Improved discovery service. Overwrite network after master takeover.
  • Add master kill switch in SystemService.
  • RPC logging support.
  • Monitoring support with SystemService and GetSystemStatus.
  • Fixes VariableUpdater.
  • Fixes lookup bug with duplicate network names.
  • Experiment and support for generating statistics. (Statsserver)

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.
  • 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