blob: 415014191a49a62b463db411f1355daeba6b6364 [file] [log] [blame]
// Copyright 2016 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.
import UIKit
import VanadiumCore
struct RPCDemoDescription: DemoDescription {
let segue: String = "ConsoleDemo"
var description: String {
return "RPC Demo"
}
var instance: Demo {
return RPCDemo()
}
}
struct RPCDemo: Demo {
mutating func start() {
startVanadium()
testHelloCall()
testCancel()
}
let addr = "/" + "@6@wsh@100.110.93.71:23000@@b6752aa9f33f86b9aecf25ecad73c8a4@l@tutorial@@"
var instance: V23? = nil
mutating func startVanadium() {
do {
try V23.configure()
instance = V23.instance
} catch let e as VError {
print("Got a verror:", e)
} catch let e {
print("Got an exception:", e)
}
}
func testHelloCall() {
var ctx = instance!.context
ctx.deadline = NSDate(timeIntervalSinceNow: 1)
print("Calling startCall")
do {
let client = try ctx.client()
client.call(name: addr, method: "Get", args: nil, returnArgsLength: 1, skipServerAuth: true)
.onResolve { result -> () in
print("Finished with \(result)")
}
.onReject { err -> () in
print("Errored with \(err)")
}
} catch let e as VError {
print("Got a verror:", e)
} catch let e {
print("Got an exception:", e)
}
}
func testCancel() {
var ctx = instance!.context
ctx.isCancellable = true
print("Calling startCall")
do {
let client = try ctx.client()
client.call(name: addr, method: "Get", args: nil, returnArgsLength: 1, skipServerAuth: true)
.onResolve { result -> () in
print("Call shouldnt have finished with \(result)")
}
.onReject { err -> () in
print("Call errored with \(err)")
}
try ctx.cancel()
.onResolve {
print("Cancelled correctly")
}
.onReject { err -> () in
print("Cancel errored with \(err)")
}
} catch let e as VError {
print("Got an unexpected verror:", e)
} catch let e {
print("Got an unexpected exception:", e)
}
}
}