blob: 10a521955f48b48e1865604ada8f3e82a43d6fda [file] [log] [blame]
// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package io.v.mojo.discovery;
import android.content.Context;
import org.chromium.mojo.application.ApplicationConnection;
import org.chromium.mojo.application.ApplicationDelegate;
import org.chromium.mojo.application.ApplicationRunner;
import org.chromium.mojo.application.ServiceFactoryBinder;
import org.chromium.mojo.bindings.InterfaceRequest;
import org.chromium.mojo.system.Core;
import org.chromium.mojo.system.MessagePipeHandle;
import org.chromium.mojom.mojo.Shell;
import io.v.android.v23.V;
import io.v.v23.context.VContext;
/**
* A mojo app that eposes the v23 discovery api through the i.v.mojo.discovery interface.
*/
public class VDiscoveryApp implements ApplicationDelegate {
private final VContext rootCtx;
VDiscoveryApp(Context context) {
rootCtx = V.init(context);
}
@Override
public void initialize(Shell shell, String[] strings, String s) {}
@Override
public boolean configureIncomingConnection(ApplicationConnection applicationConnection) {
applicationConnection.addService(new ServiceFactoryBinder<Advertiser>() {
@Override
public void bind(InterfaceRequest<Advertiser> request) {
Advertiser.MANAGER.bind(new AdvertiserImpl(V.getDiscovery(rootCtx), rootCtx),
request);
}
@Override
public String getInterfaceName() {
return Advertiser.MANAGER.getName();
}
});
applicationConnection.addService(new ServiceFactoryBinder<Scanner>() {
@Override
public void bind(InterfaceRequest<Scanner> request) {
Scanner.MANAGER.bind(new ScannerImpl(V.getDiscovery(rootCtx), rootCtx),
request);
}
@Override
public String getInterfaceName() {
return Scanner.MANAGER.getName();
}
});
return true;
}
@Override
public void quit() {
rootCtx.cancel();
}
public static void mojoMain(Context context, Core core,
MessagePipeHandle applicationRequestHandle) {
ApplicationRunner.run(new VDiscoveryApp(context), core, applicationRequestHandle);
}
}