//export swift_io_v_impl_google_rpc_ClientImpl_nativeStartCallAsync func swift_io_v_impl_google_rpc_ClientImpl_nativeStartCallAsync(ctxHandle C.GoContextHandle, cName *C.char, cMethod *C.char, cVomArgs C.SwiftByteArrayArray, skipServerAuth bool, asyncId C.AsyncCallbackIdentifier, successCallback C.SwiftAsyncSuccessHandleCallback, failureCallback C.SwiftAsyncFailureCallback) { name := C.GoString(cName) method := C.GoString(cMethod) ctx := scontext.GoContext(uint64(ctxHandle)) client := v23.GetClient(ctx) // TODO Get args (we don't have VOM yet in Swift so nothing to get until then) // args, err := decodeArgs(env, jVomArgs) // if err != nil { // sutil.ThrowSwiftError(ctx, err, unsafe.Pointer(errOut)) // return C.GoClientCallHandle(0) // } args := make([]interface{}, 0) go func() { result, err := doStartCall(ctx, name, method, skipServerAuth == true, client, args) if err != nil { var swiftVError C.SwiftVError sutil.ThrowSwiftError(ctx, err, unsafe.Pointer(&swiftVError)) sutil.DoFailureCallback(unsafe.Pointer(failureCallback), int32(asyncId), unsafe.Pointer(&swiftVError)) } else { handle := C.GoClientCallHandle(SwiftClientCall(result)) sutil.DoSuccessHandlerCallback(unsafe.Pointer(successCallback), int32(asyncId), uint64(handle)) } }() }
//export swift_io_v_impl_google_rpc_ClientCallImpl_nativeFinishAsync func swift_io_v_impl_google_rpc_ClientCallImpl_nativeFinishAsync(ctxHandle C.GoContextHandle, callHandle C.GoClientCallHandle, numResults int, asyncId C.AsyncCallbackIdentifier, successCallback C.SwiftAsyncSuccessByteArrayArrayCallback, failureCallback C.SwiftAsyncFailureCallback) { ctx := scontext.GoContext(uint64(ctxHandle)) call := GoClientCall(uint64(callHandle)) go func() { result, err := doFinish(call, numResults) if err != nil { var swiftVError C.SwiftVError sutil.ThrowSwiftError(ctx, err, unsafe.Pointer(&swiftVError)) sutil.DoFailureCallback(unsafe.Pointer(failureCallback), int32(asyncId), unsafe.Pointer(&swiftVError)) } else { sutil.DoSuccessByteArrayArrayCallback(unsafe.Pointer(successCallback), int32(asyncId), unsafe.Pointer(&result)) } }() }