Commit 7a28c35e authored by Adrian Sutton's avatar Adrian Sutton

batching: Give ContractCall more standalone utility.

parent cd8f6294
...@@ -42,8 +42,12 @@ func NewContractCall(abi *abi.ABI, addr common.Address, method string, args ...i ...@@ -42,8 +42,12 @@ func NewContractCall(abi *abi.ABI, addr common.Address, method string, args ...i
} }
} }
func (c *ContractCall) Pack() ([]byte, error) {
return c.Abi.Pack(c.Method, c.Args...)
}
func (c *ContractCall) ToCallArgs() (interface{}, error) { func (c *ContractCall) ToCallArgs() (interface{}, error) {
data, err := c.Abi.Pack(c.Method, c.Args...) data, err := c.Pack()
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to pack arguments: %w", err) return nil, fmt.Errorf("failed to pack arguments: %w", err)
} }
...@@ -54,12 +58,12 @@ func (c *ContractCall) ToCallArgs() (interface{}, error) { ...@@ -54,12 +58,12 @@ func (c *ContractCall) ToCallArgs() (interface{}, error) {
return toCallArg(msg), nil return toCallArg(msg), nil
} }
func (c *ContractCall) Unpack(hex hexutil.Bytes) ([]interface{}, error) { func (c *ContractCall) Unpack(hex hexutil.Bytes) (*CallResult, error) {
out, err := c.Abi.Unpack(c.Method, hex) out, err := c.Abi.Unpack(c.Method, hex)
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to unpack data: %w", err) return nil, fmt.Errorf("failed to unpack data: %w", err)
} }
return out, nil return &CallResult{out: out}, nil
} }
type CallResult struct { type CallResult struct {
......
...@@ -76,9 +76,7 @@ func (m *MultiCaller) CallLatest(ctx context.Context, calls ...*ContractCall) ([ ...@@ -76,9 +76,7 @@ func (m *MultiCaller) CallLatest(ctx context.Context, calls ...*ContractCall) ([
if err != nil { if err != nil {
return nil, fmt.Errorf("failed to unpack result: %w", err) return nil, fmt.Errorf("failed to unpack result: %w", err)
} }
callResults[i] = &CallResult{ callResults[i] = out
out: out,
}
} }
return callResults, nil return callResults, nil
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment