/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.milipede.mldht;
import com.aelitis.azureus.core.AzureusCore;
import java.io.UnsupportedEncodingException;
import java.security.NoSuchAlgorithmException;
import java.util.SortedSet;
import java.util.logging.Level;
import java.util.logging.Logger;
import lbms.plugins.mldht.azureus.MlDHTPlugin;
import lbms.plugins.mldht.kad.AnnounceTask;
import lbms.plugins.mldht.kad.DHT.DHTtype;
import lbms.plugins.mldht.kad.DHTStatsListener;
import lbms.plugins.mldht.kad.KBucketEntry;
import lbms.plugins.mldht.kad.KBucketEntryAndToken;
import lbms.plugins.mldht.kad.Key;
import lbms.plugins.mldht.kad.NodeLookup;
import lbms.plugins.mldht.kad.Task;
import lbms.plugins.mldht.kad.TaskListener;
import lbms.plugins.mldht.kad.TaskManager;
import lbms.plugins.mldht.kad.messages.GetPeersRequest;
import org.gudy.azureus2.core3.global.GlobalManager;
import org.gudy.azureus2.plugins.dht.mainline.MainlineDHTManager;
import org.gudy.azureus2.plugins.dht.mainline.MainlineDHTProvider;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceReference;
/**
*
* @author gurkerl
*/
public class Main implements BundleActivator{ //implements Runnable{
private MlDHTPlugin plugin = MlDHTPlugin.getInstance();;
private boolean isCreated = false;
private boolean isActivated = false;
private boolean isRunning = false;
private DHTStatsListener dhtStatsListener = null;
private final DHTtype type = null;
private SortedSet<Key> set;
public void run() {
// TODO code application logic here
int a = 2;
plugin.initialize();
plugin.initializationComplete();
HelperClass helper = new HelperClass();
// if (plugin.getDHT(type).isRunning()) {
if (a==1) {
plugin.stopDHT();
helper.deactivate();
} else {
plugin.startDHT();
helper.activate();
}
helper.updateDHTRunStatus();
}
public static void main(String[] args) throws NoSuchAlgorithmException, UnsupportedEncodingException {
int a = 2;
MlDHTPlugin plugin = MlDHTPlugin.getInstance();
plugin.initialize();
plugin.initializationComplete();
HelperClass helper = new HelperClass();
String s = "2E443D0DF062EDE0BF88B4B9F7A88C6CF7F107DA";
// if (plugin.getDHT(type).isRunning()) {
if (a==1) {
plugin.stopDHT();
helper.deactivate();
} else {
plugin.startDHT();
helper.activate();
// helper.updateDHTRunStatus();
AnnounceTask t = plugin.getDHT(DHTtype.IPV4_DHT).announce(SimpleSHA1.SHA1(s), 49001);
TaskManager tm = plugin.getDHT(DHTtype.IPV4_DHT).getTaskManager();
Task[] activeTasks = tm.getActiveTasks();
Task[] queuedTasks = tm.getQueuedTasks();
// System.out.println("active tasks: " + activeTasks.length);
// System.out.println("queued tasks: " + queuedTasks.length);
for (Task task : activeTasks) {
// System.out.println("Task id: " + task.getTaskID());
// System.out.println("Task info: " + task.getInfo());
}
for (Task task : queuedTasks) {
// System.out.println(task.getTaskID());
}
t.addListener(new TaskListener() {
@Override
public void finished(Task t) {
// System.out.println("Task " + t + " finished");
}
});
}
}
@Override
public void start(BundleContext context) throws Exception {
plugin = MlDHTPlugin.getInstance();
plugin.initialize();
plugin.initializationComplete();
ServiceReference mainlineRef = context.getServiceReference(MainlineDHTManager.class.getName());
MainlineDHTManager mainline = (MainlineDHTManager) context.getService(mainlineRef);
System.out.println("MainlineDHTManager: " + mainline);
mainline.setProvider(plugin.mlDHTProvider);
ServiceReference coreRef = context.getServiceReference(AzureusCore.class.getName());
AzureusCore core = (AzureusCore) context.getService(coreRef);
System.out.println("Core: " + core);
// ServiceReference globalRef = context.getServiceReference(GlobalManager.class.getName());
// GlobalManager globalMgr = (GlobalManager) context.getService(globalRef);
core.getGlobalManager().setMainlineDHTProvider((org.gudy.azureus2.plugins.dht.mainline.MainlineDHTProvider)plugin.mlDHTProvider);
int a = 2;
// HelperClass helper = new HelperClass();
//
// String s = "2E443D0DF062EDE0BF88B4B9F7A88C6CF7F107DA";
//
//// if (plugin.getDHT(type).isRunning()) {
// if (a==1) {
// plugin.stopDHT();
// helper.deactivate();
// } else {
// plugin.startDHT();
// helper.activate();
//
//
// }
//
//// helper.updateDHTRunStatus();
//
// AnnounceTask t = plugin.getDHT(DHTtype.IPV4_DHT).announce(SimpleSHA1.SHA1(s), 6881);
// TaskManager tm = plugin.getDHT(DHTtype.IPV4_DHT).getTaskManager();
//
// Task[] activeTasks = tm.getActiveTasks();
// Task[] queuedTasks = tm.getQueuedTasks();
// System.out.println("active tasks: " + activeTasks.length);
// System.out.println("queued tasks: " + queuedTasks.length);
// for (Task task : activeTasks) {
// System.out.println("Task id: " + task.getTaskID());
// System.out.println("Task info: " + task.getInfo());
// }
// for (Task task : queuedTasks) {
// System.out.println(task.getTaskID());
// }
//
// t.addListener(new TaskListener() {
//
// @Override
// public void finished(Task t) {
// System.out.println("Task " + t + " finished");
//// try {
// String s = "2E443D0DF062EDE0BF88B4B9F7A88C6CF7F107DA";
//
//// final NodeLookup nlu = plugin.getDHT(DHTtype.IPV4_DHT).findNode(new Key(SimpleSHA1.SHA1(s)));
//// nlu.addListener(new TaskListener() {
////
//// @Override
//// public void finished(Task t) {
////
//// System.out.println("Nodelookup complete");
//// set = nlu.closestSet;
//// System.out.println("Nodelookup set toArray: " + set.toArray().toString());
//// System.out.println("Nodelookup size: " + set.size());
////
//// byte[] token = new byte[10];
//// token[1] = 22;
//// t.addToTodo(new KBucketEntryAndToken(new KBucketEntry(), token));
////
//// GetPeersRequest req = new GetPeersRequest(plugin.getDHT(DHTtype.IPV4_DHT).getOurID(), t.getTargetKey());
//// plugin.getDHT(DHTtype.IPV4_DHT).getPeers(req);
////
//// }
//// });
//// } catch (NoSuchAlgorithmException ex) {
//// Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
//// } catch (UnsupportedEncodingException ex) {
//// Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
//// }
//
//
// }
//
//
//
// });
}
@Override
public void stop(BundleContext arg0) throws Exception {
MlDHTPlugin.getInstance().closedownInitiated();
}
}