Skip to content

Releases: Hive2Hive/Hive2Hive

Release 1.2.4

27 Oct 16:08
Compare
Choose a tag to compare

Fixed referenced version in POM. Pulling dependency from Maven Central works now properly.
TomP2P still needs to be added manually, as it's not part of Maven Central (yet).

Release 1.2.3

27 Oct 15:00
Compare
Choose a tag to compare

Hive2Hive is now available on Maven Central. You don't need to specify the custom repository anymore. Otherwise, there's no change on the codebase.

Release 1.2.2

04 Mar 20:31
Compare
Choose a tag to compare

Fixes changing the protection key for shared folders. In release 1.2.1 it was not possible to modify content of a shared folder.

Release 1.2.1

04 Mar 10:20
Compare
Choose a tag to compare

This release does not contain new features, but improves stability and fixes multiple bugs:

  • Separate completely from BouncyCastle (was still used in a hashCode method)
  • Set custom root directory in the console client
  • Release buffers to keep memory usage low
  • Add slow peer filter for storage and replication to enhance stability of mobile phones
  • Auto-repair Locations during login if they are broken
  • Reduce size of direct messages
  • Upgrade to latest Process Framework
  • Update to latest TomP2P

Release 1.2.0

21 Feb 23:42
Compare
Choose a tag to compare

This release includes a whole lot of improvements:

  • Extracted the file management (more control for the user)
  • Inject own encryption and serialization implementation if required
  • Improved processing framework
  • Updated P2P framework
  • Android support
  • Stability improvements
  • API simplifications
  • Other bugfixes

1.1.1 Alpha 1

23 Apr 06:18
Compare
Choose a tag to compare
1.1.1 Alpha 1 Pre-release
Pre-release

First alpha release of version 1.1.1.

Release 1.1.0

07 Mar 08:21
Compare
Choose a tag to compare

With release 1.1.0, there comes a new set of features and improvements:

  • Support sharing of files among one or multiple users (individual read / write permissions possible)
  • New process framework speeding up the execution of the operations and enhancing the stability
  • More advanced configuration and extension of the library possible
  • Optimized model, removed unneeded objects in the DHT
  • Per-file encryption instead of per-chunk encryption (less key generation)
  • Caching of foreign public keys
  • Many bug fixes
  • Extended javadoc

The interfaces to create a node have slightly changed, allowing a more detailed peer configuration. Here's an example how to create a master and a 'normal' peer:

// master peer configuration
INetworkConfiguration masterConfig = NetworkConfiguration.create("masterID");
// node peer configuration with bootstrap address
INetworkConfiguration nodeConfig = NetworkConfiguration.create("nodeID", InetAddress.getByName("192.168.1.100"));
// default file configuration
IFileConfiguration defaultFileConfig = FileConfiguration.createDefault();
IH2HNode master = H2HNode.createNode(masterConfig, defaultFileConfig);
master.connect();
IH2HNode node = H2HNode.createNode(nodeConfig, defaultFileConfig);
node.connect();

Here's an example how to interact with the node:

UserCredentials userCredentials = new UserCredentials("user@hive2hive.com", "password", "1234");
// perform operations on the user management
IUserManager userManager = node.getUserManager();
IProcessComponent registerProcess = userManager.register(userCredentials);
// pause & resume the process
registerProcess.pause();
registerProcess.resume();
// attach a listener that are called when finished
registerProcess.attachListener(new IProcessComponentListener() {
    @Override
    public void onSucceeded() {
        System.out.println("Successfully registered");
    }
    @Override
    public void onFinished() {
        // ignore
    }
    @Override
    public void onFailed(RollbackReason reason) {
        System.out.println("Failed! Reason: " + reason.getHint());
    }
});

After a login, the file management can be used:

// for the login, the root folder must be specified
File root = new File(H2HConstants.DEFAULT_ROOT_PATH);
userManager.login(userCredentials, root.toPath());
// add a file
IFileManager fileManager = node.getFileManager();
IProcessComponent addProcess = fileManager.add(new File(root, "demo-file"));

First release

27 Jan 14:04
Compare
Choose a tag to compare
First release Pre-release
Pre-release

The first release of the Hive2Hive library. It does not contain all features yet, but the basic private file operations. This means, that it's possible to

  • register a new user
  • login as a registered user
  • add, delete, move, update a file, folder or a whole (recursive) file tree
  • logout when the user is done

When a user is logged in on multiple clients, they automatically synchronize in real-time, meaning that notifications are sent around when something has changed.

Note that there is also a (beta) function to share a folder (with all including children). This function is not well tested yet, but kept in this release to soft-soap you. This great feature and more are planned for the next release.

Here's the short basics how to use it:

// use the builder to create a Hive2Hive node
// create a master peer
H2HNodeBuilder masterBuilder = new H2HNodeBuilder().setIsMaster(true);
IH2HNode masterNode = masterBuilder.build();
// or a client peer
H2HNodeBuilder clientBuilder = new H2HNodeBuilder().setIsMaster(false).setBootstrapAddress(InetAddress.getByName("192.168.1.100"));
IH2HNode clientNode = clientBuilder.build();

Once you have created and connected a node, you can start using it:

// register a new user
UserCredentials userCredentials = new UserCredentials("user@hive2hive.com", "password", "1234");
IProcess register = clientNode.getUserManagement().register(userCredentials);
// pause & continue the process
register.pause();
register.continueProcess();
// add listeners that are called when finished
register.addListener(new IProcessListener() {
    @Override
    public void onSuccess() {
        System.out.println("finished");
    }
    @Override
    public void onFail(Exception exception) {
        System.out.println("Failed! Reason: " + exception.getMessage());
    }
});