package com.util;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Set;
import com.limegroup.gnutella.ActivityCallback;
import com.limegroup.gnutella.Connection;
import com.limegroup.gnutella.Downloader;
import com.limegroup.gnutella.Endpoint;
import com.limegroup.gnutella.ErrorCallback;
import com.limegroup.gnutella.GUID;
import com.limegroup.gnutella.R;
import com.limegroup.gnutella.RemoteFileDesc;
import com.limegroup.gnutella.RouterService;
import com.limegroup.gnutella.chat.Chatter;
import com.limegroup.gnutella.search.HostData;
import com.limegroup.gnutella.security.User;
import com.limegroup.gnutella.settings.SharingSettings;
import android.app.Application;
import android.content.Context;
public class P2PApp extends Application {
private static RouterService sRouterService;
private static boolean sInitialized = false;
public static RouterService getRouterService(ActivityCallback callback) {
sRouterService.setCallback(callback);
return sRouterService;
}
ErrorCallback sErrorCallback = new ErrorCallback() {
@Override
public void error(Throwable t) {
t.printStackTrace();
}
@Override
public void error(Throwable t, String msg) {
t.printStackTrace();
}
};
public static boolean initP2P(Context context) {
if (sInitialized)
return false;
// TODO: Check if sdcard is available and if space is full.
SharingSettings.setSaveDirectory();
copyConfigFile(context);
sInitialized = true;
return true;
}
public static void copyConfigFile(Context context) {
// copy file
File gnutella = new File("/sdcard/musiclife/setting/gnutella.net");
if (!gnutella.exists()) {
InputStream in = context.getResources().openRawResource(R.raw.gnutella);
OutputStream out;
try {
out = new FileOutputStream(gnutella);
byte[] buf = new byte[4096];
int len;
while ((len = in.read(buf)) > 0){
out.write(buf, 0, len);
}
in.close();
out.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
private static class DummyCallback implements ActivityCallback {
@Override
public void acceptChat(Chatter ctr) {
// TODO Auto-generated method stub
}
@Override
public void addDownload(Downloader d) {
// TODO Auto-generated method stub
}
@Override
public void addressStateChanged() {
// TODO Auto-generated method stub
}
@Override
public void browseHostFailed(GUID guid) {
// TODO Auto-generated method stub
}
@Override
public void chatErrorMessage(Chatter chatter, String str) {
// TODO Auto-generated method stub
}
@Override
public void chatUnavailable(Chatter chatter) {
// TODO Auto-generated method stub
}
@Override
public void componentLoading(String component) {
// TODO Auto-generated method stub
}
@Override
public void connectionClosed(Connection c) {
// TODO Auto-generated method stub
}
@Override
public void connectionInitialized(Connection c) {
// TODO Auto-generated method stub
}
@Override
public void connectionInitializing(Connection c) {
// TODO Auto-generated method stub
}
@Override
public void downloadsComplete() {
// TODO Auto-generated method stub
}
@Override
public String getHostValue(String key) {
// TODO Auto-generated method stub
return null;
}
@Override
public User getUserAuthenticationInfo(String host) {
// TODO Auto-generated method stub
return null;
}
@Override
public void handleQueryString(String query) {
// TODO Auto-generated method stub
}
@Override
public boolean isQueryAlive(GUID guid) {
// TODO Auto-generated method stub
return false;
}
@Override
public void promptAboutCorruptDownload(Downloader dloader) {
// TODO Auto-generated method stub
}
@Override
public void receiveMessage(Chatter chr) {
// TODO Auto-generated method stub
}
@Override
public void removeDownload(Downloader d) {
// TODO Auto-generated method stub
}
@Override
public void restoreApplication() {
// TODO Auto-generated method stub
}
@Override
public void setAnnotateEnabled(boolean enabled) {
// TODO Auto-generated method stub
}
@Override
public void showDownloads() {
// TODO Auto-generated method stub
}
@Override
public void handleQueryResult(RemoteFileDesc rfd, HostData data, Set<Endpoint> locs) {
// TODO Auto-generated method stub
}
@Override
public void retryQueryAfterConnect() {
// TODO Auto-generated method stub
}
};
@Override
public void onCreate() {
super.onCreate();
Constants.init(this);
new Thread(new Runnable() {
@Override
public void run() {
sRouterService = new RouterService(new DummyCallback());
sRouterService.start();
}
}).start();
}
}