mirror of
https://github.com/luxfi/safe-ios.git
synced 2026-10-30 15:19:20 +00:00
52 lines
1.8 KiB
Swift
52 lines
1.8 KiB
Swift
//
|
|
// Created by Dmitry Bespalov on 20.02.22.
|
|
//
|
|
|
|
import Foundation
|
|
import JsonRpc2
|
|
import Json
|
|
import Solidity
|
|
|
|
extension Node {
|
|
public class NodeMessageCallMethod<ReturnType>: JsonRpc2MethodWithCompletion, Codable where ReturnType: Codable {
|
|
public var message: MessageCall
|
|
public var block: NodeBlockId
|
|
public var completion: (Result<ReturnType, Error>) -> Void = { _ in }
|
|
|
|
public init(message: MessageCall, block: NodeBlockId, completion: @escaping (Result<ReturnType, Error>) -> ()) {
|
|
self.message = message
|
|
self.block = block
|
|
self.completion = completion
|
|
}
|
|
|
|
public convenience init<T>(message: MessageCall, block: NodeBlockId, completion: @escaping (Result<T, Error>) -> ()) where T: FixedWidthInteger, ReturnType == NodeQuantity<T> {
|
|
self.init(
|
|
message: message,
|
|
block: block,
|
|
completion: wrap(completion: completion)
|
|
)
|
|
}
|
|
|
|
public convenience init<T>(message: MessageCall, block: NodeBlockId, completion: @escaping (Result<T, Error>) -> ()) where T: NodeDataCodable, ReturnType == NodeData<T> {
|
|
self.init(
|
|
message: message,
|
|
block: block,
|
|
completion: wrap(completion: completion)
|
|
)
|
|
}
|
|
|
|
required public init(from decoder: Decoder) throws {
|
|
var container = try decoder.unkeyedContainer()
|
|
message = try container.decode(MessageCall.self)
|
|
block = try container.decode(NodeBlockId.self)
|
|
}
|
|
|
|
public func encode(to encoder: Encoder) throws {
|
|
var container = encoder.unkeyedContainer()
|
|
try container.encode(message)
|
|
try container.encode(block)
|
|
}
|
|
|
|
}
|
|
}
|