X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fde%2Ftodesbaum%2Fjsite%2Fapplication%2FFreenet7Interface.java;h=78250b21ad7554fd6a7fe8a0e43d91489a4188d7;hb=e47e15fdbb7515f5a3757c3f5df8c1d0950aee8e;hp=5b93654001d4550d5dfd8d2fdca5087547e7685a;hpb=e4f461213da0e30faf9e9eb2e97626abff320618;p=jSite.git diff --git a/src/de/todesbaum/jsite/application/Freenet7Interface.java b/src/de/todesbaum/jsite/application/Freenet7Interface.java index 5b93654..78250b2 100644 --- a/src/de/todesbaum/jsite/application/Freenet7Interface.java +++ b/src/de/todesbaum/jsite/application/Freenet7Interface.java @@ -1,6 +1,5 @@ /* - * jSite - - * Copyright (C) 2006 David Roden + * jSite - Freenet7Interface.java - Copyright © 2006–2012 David Roden * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -28,55 +27,102 @@ import de.todesbaum.util.freenet.fcp2.Message; import de.todesbaum.util.freenet.fcp2.Node; /** - * @author David Roden <droden@gmail.com> - * @version $Id$ + * Interface for freenet-related operations. + * + * @author David ‘Bombe’ Roden <bombe@freenetproject.org> */ public class Freenet7Interface { + /** Random number to differentiate several jSites. */ + private static final int number = (int) (Math.random() * Integer.MAX_VALUE); + + /** Counter. */ private static int counter = 0; + /** The node to connect to. */ private Node node; + + /** The connection to the node. */ private Connection connection; + /** + * Sets the hostname of the node. The default port for FCP2 connections ({@link Node#DEFAULT_PORT}) + * is used. + * + * @param hostname + * The hostname of the node + */ public void setNodeAddress(String hostname) { node = new Node(hostname); - connection = new Connection(node, "connection-" + counter++); + connection = new Connection(node, "jSite-" + number + "-connection-" + counter++); } + /** + * Sets the hostname and the port of the node. + * + * @param hostname + * The hostname of the node + * @param port + * The port number of the node + */ public void setNodeAddress(String hostname, int port) { node = new Node(hostname, port); - connection = new Connection(node, "connection-" + counter++); + connection = new Connection(node, "jSite-" + number + "-connection-" + counter++); } - + + /** + * Sets hostname and port from the given node. + * + * @param node + * The node to get the hostname and port from + */ public void setNode(de.todesbaum.jsite.application.Node node) { if (node != null) { this.node = new Node(node.getHostname(), node.getPort()); - connection = new Connection(node, "connection-" + counter++); + connection = new Connection(node, "jSite-" + number + "-connection-" + counter++); } else { this.node = null; connection = null; } } - + + /** + * Removes the current node from the interface. + */ public void removeNode() { node = null; connection = null; } /** - * @return Returns the node. + * Returns the node this interface is connecting to. + * + * @return The node */ public Node getNode() { return node; } /** - * @return Returns the connection. + * Creates a new connection to the current node with the given identifier. + * + * @param identifier + * The identifier of the connection + * @return The connection to the node */ public Connection getConnection(String identifier) { return new Connection(node, identifier); } + /** + * Checks whether the current node is connected. If the node is not + * connected, a connection will be tried. + * + * @return true if the node is connected, false + * otherwise + * @throws IOException + * if an I/O error occurs communicating with the node + */ public boolean isNodePresent() throws IOException { if (!connection.isConnected()) { return connection.connect(); @@ -84,9 +130,18 @@ public class Freenet7Interface { return true; } + /** + * Generates an SSK key pair. + * + * @return An array of strings, the first one being the generated private + * (insert) URI and the second one being the generated public + * (request) URI + * @throws IOException + * if an I/O error occurs communicating with the node + */ public String[] generateKeyPair() throws IOException { if (!isNodePresent()) { - return null; + throw new IOException("Node is offline."); } GenerateSSK generateSSK = new GenerateSSK(); Client client = new Client(connection, generateSSK); @@ -95,6 +150,8 @@ public class Freenet7Interface { } /** + * Checks whether the interface has already been configured with a node. + * * @return true if this interface already has a node set, * false otherwise */