worker: Use http rpc for miner API
This commit is contained in:
parent
f933e1d2b7
commit
cf4dfa3a05
36
cli/cmd.go
36
cli/cmd.go
@ -4,6 +4,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
"strings"
|
"strings"
|
||||||
@ -206,7 +207,22 @@ func GetFullNodeAPI(ctx *cli.Context) (api.FullNode, jsonrpc.ClientCloser, error
|
|||||||
return client.NewFullNodeRPC(ctx.Context, addr, headers)
|
return client.NewFullNodeRPC(ctx.Context, addr, headers)
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetStorageMinerAPI(ctx *cli.Context, opts ...jsonrpc.Option) (api.StorageMiner, jsonrpc.ClientCloser, error) {
|
type GetStorageMinerOptions struct {
|
||||||
|
PreferHttp bool
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetStorageMinerOption func(*GetStorageMinerOptions)
|
||||||
|
|
||||||
|
func StorageMinerUseHttp(opts *GetStorageMinerOptions) {
|
||||||
|
opts.PreferHttp = true
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetStorageMinerAPI(ctx *cli.Context, opts ...GetStorageMinerOption) (api.StorageMiner, jsonrpc.ClientCloser, error) {
|
||||||
|
var options GetStorageMinerOptions
|
||||||
|
for _, opt := range opts {
|
||||||
|
opt(&options)
|
||||||
|
}
|
||||||
|
|
||||||
if tn, ok := ctx.App.Metadata["testnode-storage"]; ok {
|
if tn, ok := ctx.App.Metadata["testnode-storage"]; ok {
|
||||||
return tn.(api.StorageMiner), func() {}, nil
|
return tn.(api.StorageMiner), func() {}, nil
|
||||||
}
|
}
|
||||||
@ -216,7 +232,23 @@ func GetStorageMinerAPI(ctx *cli.Context, opts ...jsonrpc.Option) (api.StorageMi
|
|||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return client.NewStorageMinerRPC(ctx.Context, addr, headers, opts...)
|
if options.PreferHttp {
|
||||||
|
u, err := url.Parse(addr)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, xerrors.Errorf("parsing miner api URL: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
switch u.Scheme {
|
||||||
|
case "ws":
|
||||||
|
u.Scheme = "http"
|
||||||
|
case "wss":
|
||||||
|
u.Scheme = "https"
|
||||||
|
}
|
||||||
|
|
||||||
|
addr = u.String()
|
||||||
|
}
|
||||||
|
|
||||||
|
return client.NewStorageMinerRPC(ctx.Context, addr, headers)
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetWorkerAPI(ctx *cli.Context) (api.WorkerAPI, jsonrpc.ClientCloser, error) {
|
func GetWorkerAPI(ctx *cli.Context) (api.WorkerAPI, jsonrpc.ClientCloser, error) {
|
||||||
|
@ -176,7 +176,7 @@ var runCmd = &cli.Command{
|
|||||||
var closer func()
|
var closer func()
|
||||||
var err error
|
var err error
|
||||||
for {
|
for {
|
||||||
nodeApi, closer, err = lcli.GetStorageMinerAPI(cctx, jsonrpc.WithTimeout(30*time.Second))
|
nodeApi, closer, err = lcli.GetStorageMinerAPI(cctx, lcli.StorageMinerUseHttp)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@ -457,11 +457,6 @@ var runCmd = &cli.Command{
|
|||||||
|
|
||||||
log.Info("Worker registered successfully, waiting for tasks")
|
log.Info("Worker registered successfully, waiting for tasks")
|
||||||
|
|
||||||
closing, err := nodeApi.Closing(ctx)
|
|
||||||
if err != nil {
|
|
||||||
log.Errorf("failed to get remote closing channel: %+v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
select {
|
select {
|
||||||
case <-closing:
|
case <-closing:
|
||||||
case <-ctx.Done():
|
case <-ctx.Done():
|
||||||
|
Loading…
Reference in New Issue
Block a user