start work on embedded router

This commit is contained in:
Zlatin Balevsky
2019-06-26 22:39:25 +01:00
parent fb7b4466c2
commit 0df2a0e039
3 changed files with 31 additions and 3 deletions

View File

@ -2,6 +2,7 @@ apply plugin : 'application'
mainClassName = 'com.muwire.core.Core'
applicationDefaultJvmArgs = ['-Djava.util.logging.config.file=logging.properties']
dependencies {
compile 'net.i2p:router:0.9.40'
compile 'net.i2p.client:mstreaming:0.9.40'
compile 'net.i2p.client:streaming:0.9.40'

View File

@ -59,6 +59,8 @@ import net.i2p.data.PrivateKey
import net.i2p.data.Signature
import net.i2p.data.SigningPrivateKey
import net.i2p.router.Router
@Log
public class Core {
@ -81,14 +83,28 @@ public class Core {
private final DirectoryWatcher directoryWatcher
final FileManager fileManager
private final Router router
final AtomicBoolean shutdown = new AtomicBoolean()
public Core(MuWireSettings props, File home, String myVersion) {
this.home = home
this.muOptions = props
log.info "Initializing I2P context"
I2PAppContext.getGlobalContext().logManager()
I2PAppContext.getGlobalContext()._logManager = new MuWireLogManager()
if (!props.embeddedRouter) {
log.info "Initializing I2P context"
I2PAppContext.getGlobalContext().logManager()
I2PAppContext.getGlobalContext()._logManager = new MuWireLogManager()
router = null
} else {
log.info("launching embedded router")
Properties routerProps = new Properties()
props.putAt("i2p.dir.config", home.getAbsolutePath())
router = new Router(routerProps)
router.getContext().logManager()
router.getContext()._logManager = new MuWireLogManager()
router.runRouter()
}
log.info("initializing I2P socket manager")
def i2pClient = new I2PClientFactory().createClient()
@ -245,6 +261,10 @@ public class Core {
}
public void startServices() {
if (router != null) {
while(!router.isRunning())
Thread.sleep(100)
}
hasherService.start()
trustService.start()
trustService.waitForLoad()
@ -272,6 +292,10 @@ public class Core {
directoryWatcher.stop()
log.info("shutting down connection manager")
connectionManager.shutdown()
if (router != null) {
log.info("shutting down embedded router")
router.shutdown(0)
}
}
static main(args) {

View File

@ -21,6 +21,7 @@ class MuWireSettings {
float downloadSequentialRatio
int hostClearInterval
int meshExpiration
boolean embeddedRouter
MuWireSettings() {
this(new Properties())
@ -39,6 +40,7 @@ class MuWireSettings {
downloadSequentialRatio = Float.valueOf(props.getProperty("downloadSequentialRatio","0.8"))
hostClearInterval = Integer.valueOf(props.getProperty("hostClearInterval","60"))
meshExpiration = Integer.valueOf(props.getProperty("meshExpiration","60"))
embeddedRouter = Boolean.valueOf(props.getProperty("embeddedRouter","false"))
watchedDirectories = new HashSet<>()
if (props.containsKey("watchedDirectories")) {
@ -61,6 +63,7 @@ class MuWireSettings {
props.setProperty("downloadSequentialRatio", String.valueOf(downloadSequentialRatio))
props.setProperty("hostClearInterval", String.valueOf(hostClearInterval))
props.setProperty("meshExpiration", String.valueOf(meshExpiration))
props.setProperty("embeddedRouter", String.valueOf(embeddedRouter))
if (!watchedDirectories.isEmpty()) {
String encoded = watchedDirectories.stream().