- //
- // RUNNABLE METHODS
- //
-
- /**
- * {@inheritDoc}
- */
- @Override
- public void run() {
- boolean waitBeforeReconnect = false;
- while (!shouldStop()) {
-
- /* wait a minute before reconnecting for another try. */
- if (waitBeforeReconnect) {
- logger.log(Level.FINE, "Waiting 60 seconds before reconnecting.");
- synchronized (syncObject) {
- try {
- syncObject.wait(60 * 1000);
- } catch (InterruptedException ie1) {
- /* ignore. */
- }
- }
- if (shouldStop()) {
- continue;
- }
- } else {
- waitBeforeReconnect = true;
- }
-
- try {
-
- /* connect. */
- Connection connection = freenetInterface.getConnection("jSite-WoT-Connector");
- logger.log(Level.INFO, String.format("Trying to connect to node at %s...", freenetInterface.getNode()));
- if (!connection.connect()) {
- logger.log(Level.WARNING, "Connection failed.");
- continue;
- }
- Client client = new Client(connection);
-
- /* send FCP command to WebOfTrust plugin. */
- String messageIdentifier = "jSite-WoT-Command-" + commandCounter.getAndIncrement();
- FcpPluginMessage pluginMessage = new FcpPluginMessage(messageIdentifier);
- pluginMessage.setPluginName("plugins.WebOfTrust.WebOfTrust");
- pluginMessage.setParameter("Message", "GetOwnIdentities");
- client.execute(pluginMessage);
-
- /* read a message. */
- Message message = null;
- while (!client.isDisconnected() && !shouldStop() && (message == null)) {
- message = client.readMessage(1000);
- }
- if (message == null) {
- continue;
- }
-
- /* evaluate message. */
- if (message.getName().equals("FCPPluginReply")) {
- logger.log(Level.FINE, "Got matching Reply from WebOfTrust.");
- /* parse identities. */
- List<OwnIdentity> ownIdentities = new ArrayList<OwnIdentity>();
- int identityCounter = -1;
- while (message.get("Replies.Identity" + ++identityCounter) != null) {
- String id = message.get("Replies.Identity" + identityCounter);
- String nickname = message.get("Replies.Nickname" + identityCounter);
- String requestUri = shortenUri(message.get("Replies.RequestURI" + identityCounter));
- String insertUri = shortenUri(message.get("Replies.InsertURI" + identityCounter));
- DefaultOwnIdentity ownIdentity = new DefaultOwnIdentity(id, nickname, requestUri, insertUri);
- logger.log(Level.FINE, String.format("Parsed Own Identity %s.", ownIdentity));
- ownIdentities.add(ownIdentity);
- }
- logger.log(Level.INFO, String.format("Parsed %d Own Identities.", ownIdentities.size()));
-
- synchronized (this.ownIdentities) {
- this.ownIdentities.clear();
- this.ownIdentities.addAll(ownIdentities);
- }
- } else if ("ProtocolError".equals(message.getName())) {
- logger.log(Level.WARNING, "WebOfTrust Plugin not found!");
- } else if ("Error".equals(message.getName())) {
- logger.log(Level.WARNING, "WebOfTrust Plugin returned an error!");
- }
-
- /* disconnect. */
- logger.log(Level.INFO, "Disconnecting from Node.");
- connection.disconnect();
-
- } catch (IOException ioe1) {
- logger.log(Level.WARNING, String.format("Communication with node at %s failed.", freenetInterface.getNode()), ioe1);
- }
-
- }
- }
-