Skip to content

Configuration

Yenwen Feng edited this page Mar 2, 2018 · 6 revisions

Configuration

Builder

Using EtherSpace.Builder to construct a new instance.

EtherSpace etherSpace = new EtherSpace.Builder()
        .provider("https://rinkeby.infura.io/") // Or your local node
        .credentials(new Credentials(YOUR_PRIVATE_KEY_OR_WALLET))
        .addCallAdapter(new CompletableFutureCallAdapter<>())
        .client(OkHttpClient.Builder().build())
        .build();
  • provider*:

    Ethereum node URL

  • credentials:

    Private Key or your wallet file. (format: UTC JSON Keystore File) Can be null if you only want to make calls to constant functions. You Can also supply different credentials in Options.

  • calladapters:

    Etherspace supports different response types through CallAdapter. See Sync / Async

    Return Type CallAdapter
    kotlinx.coroutines.experimental.Deferred<T> cc.etherspace.calladapter.CoroutineCallAdapter
    java.util.concurrent.CompletableFuture<T> cc.etherspace.calladapter.CompletableFutureCallAdapter
    rx.Observable<T> cc.etherspace.calladapter.RxCallAdapter
  • client:

    An OkHttpClient

Sync / Async

All method calls in Smart Contract interface are synchronized by default. Etherspace supports Coroutine (Kotlin), CompletableFuture (Java), RxJava 1 (Java) for asynchronized calls. Just make sure the corresponding CallAdapter is added on EtherSpace builder.

CoroutineCallAdapter

// Kotlin
interface CoroutineGreeter {
    @Throws(IOException::class)
    @Call
    fun greet(): Deferred<String>
}

val etherSpace = EtherSpace.build {
    provider = "https://rinkeby.infura.io/"
    callAdapters += CoroutineCallAdapter()
}
greeter = etherSpace.create(SMART_CONTRACT_ADDRESS, CoroutineGreeter::class.java)

runBlocking {
    println(greeter.greet().await()) // Should be Hello World
}

CompletableFutureCallAdapter

// Java
interface CompletableFutureCallAdapter {
    @Call
    CompletableFuture<String> greet() throws IOException;
}

EtherSpace etherSpace = new EtherSpace.Builder()
        .provider("https://rinkeby.infura.io/") // Or your local node
        .addCallAdapter(new CompletableFutureCallAdapter<>())
        .build();
Greeter greeter = etherSpace.create(SMART_CONTRACT_ADDRESS, CompletableFutureGreeter.class);

System.out.println(greeter.greet().join()); // Should be "Hello World"

RxJavaCallAdapter

// Java
interface RxJavaGreeter {
    @Call
    Observable<String> greet();
}

EtherSpace etherSpace = new EtherSpace.Builder()
        .provider("https://rinkeby.infura.io/") // Or your local node
        .addCallAdapter(new RxJavaCallAdapter<>())
        .build();
Greeter greeter = etherSpace.create(SMART_CONTRACT_ADDRESS, RxJavaGreeter.class);

greeter.greet().subscribe(System.out::println); // Should be "Hello World"
Clone this wiki locally