2
vendor/github.com/siphiuel/lc-proxy-wrapper/.gitignore
generated
vendored
Normal file
2
vendor/github.com/siphiuel/lc-proxy-wrapper/.gitignore
generated
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
config.toml
|
||||
lc-proxy-wrapper
|
||||
13
vendor/github.com/siphiuel/lc-proxy-wrapper/Makefile
generated
vendored
Normal file
13
vendor/github.com/siphiuel/lc-proxy-wrapper/Makefile
generated
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
include Makefile.vars
|
||||
|
||||
build-verif-proxy-wrapper:
|
||||
CGO_CFLAGS="$(CGO_CFLAGS)" go build -x -v -ldflags $(LDFLAGS)
|
||||
|
||||
build-verif-proxy-wrapper-exe:
|
||||
CGO_CFLAGS="$(CGO_CFLAGS)" go build -x -v -ldflags $(LDFLAGS) -o verif-proxy-wrapper ./main
|
||||
|
||||
.PHONY: clean
|
||||
|
||||
clean:
|
||||
rm -rf nimcache libcb.a verif-proxy-wrapper
|
||||
|
||||
15
vendor/github.com/siphiuel/lc-proxy-wrapper/Makefile.vars
generated
vendored
Normal file
15
vendor/github.com/siphiuel/lc-proxy-wrapper/Makefile.vars
generated
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
NIMBUS_ETH1_PATH ?= $(CURDIR)/../nimbus-eth1
|
||||
NIMBASE_H_PATH ?= $(NIMBUS_ETH1_PATH)/vendor/nimbus-build-system/vendor/Nim-csources-v1/c_code/
|
||||
VERIF_PROXY_OUT_PATH ?= $(NIMBUS_ETH1_PATH)/build/libverifproxy
|
||||
|
||||
CGO_CFLAGS += -I$(VERIF_PROXY_OUT_PATH) -I$(NIMBASE_H_PATH)
|
||||
|
||||
EXTLDFLAGS=-lverifproxy -L$(VERIF_PROXY_OUT_PATH)
|
||||
|
||||
ifeq (, $(findstring darwin, $(OS)))
|
||||
EXTLDFLAGS += -framework Security
|
||||
endif
|
||||
|
||||
LDFLAGS ?= '-v "-extldflags=$(EXTLDFLAGS)"'
|
||||
|
||||
|
||||
6
vendor/github.com/siphiuel/lc-proxy-wrapper/README.md
generated
vendored
Normal file
6
vendor/github.com/siphiuel/lc-proxy-wrapper/README.md
generated
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
# Build Nim
|
||||
nim c --app:staticlib --header:cb.h --noMain:on --nimcache:$HOME/c/lc-proxy-wrapper/nimcache cb.nim
|
||||
|
||||
# Build go
|
||||
go build
|
||||
./lc-proxy-wrapper
|
||||
27
vendor/github.com/siphiuel/lc-proxy-wrapper/cb.nim
generated
vendored
Normal file
27
vendor/github.com/siphiuel/lc-proxy-wrapper/cb.nim
generated
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
{.pragma: some, header: "cb.h".}
|
||||
|
||||
type
|
||||
OnHeaderCallback = proc (s: cstring) {.cdecl.}
|
||||
|
||||
proc callbackFn(json: string) {.exportc, cdecl.} =
|
||||
echo "callbackFn", json
|
||||
|
||||
# callbackFn "some"
|
||||
|
||||
proc HelloFromNim(): cstring {.exportc.} =
|
||||
return "Hello, World From Nim\n"
|
||||
|
||||
var headerCallback: OnHeaderCallback
|
||||
|
||||
proc setHeaderCallback*(cb: OnHeaderCallback) {.exportc.} =
|
||||
headerCallback = cb
|
||||
|
||||
proc invokeHeaderCallback*() {.exportc.} =
|
||||
headerCallback("inside Nim 2222")
|
||||
|
||||
proc testEcho*() {.exportc.} =
|
||||
echo "in testEcho"
|
||||
|
||||
|
||||
|
||||
|
||||
12
vendor/github.com/siphiuel/lc-proxy-wrapper/cfuncs.go
generated
vendored
Normal file
12
vendor/github.com/siphiuel/lc-proxy-wrapper/cfuncs.go
generated
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
package proxy
|
||||
|
||||
/*
|
||||
#include <stdio.h>
|
||||
|
||||
void goCallback_cgo(char * json) {
|
||||
printf("inside goCallback_cgo\n");
|
||||
void goCallback(char *);
|
||||
goCallback(json);
|
||||
}
|
||||
*/
|
||||
import "C"
|
||||
104
vendor/github.com/siphiuel/lc-proxy-wrapper/proxy.go
generated
vendored
Normal file
104
vendor/github.com/siphiuel/lc-proxy-wrapper/proxy.go
generated
vendored
Normal file
@@ -0,0 +1,104 @@
|
||||
package proxy
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"os"
|
||||
"runtime"
|
||||
"unsafe"
|
||||
|
||||
"github.com/BurntSushi/toml"
|
||||
)
|
||||
|
||||
/*
|
||||
#include <stdlib.h>
|
||||
#include "verifproxy.h"
|
||||
|
||||
typedef void (*callback_type)(char *);
|
||||
void goCallback_cgo(char *);
|
||||
|
||||
*/
|
||||
import "C"
|
||||
|
||||
type Web3UrlType struct {
|
||||
Kind string `toml:"kind"`
|
||||
Web3Url string `toml:"web3Url"`
|
||||
}
|
||||
type Config struct {
|
||||
Eth2Network string `toml:"network"`
|
||||
TrustedBlockRoot string `toml:"trusted-block-root"`
|
||||
// Web3Url Web3UrlType `toml:"web3-url"`
|
||||
Web3Url string `toml:"web3-url"`
|
||||
RpcAddress string `toml:"rpc-address"`
|
||||
RpcPort uint16 `toml:"rpc-port"`
|
||||
LogLevel string `toml:"log-level"`
|
||||
}
|
||||
|
||||
type BeaconBlockHeader struct {
|
||||
Slot uint64 `json:"slot"`
|
||||
ProposerIndex uint64 `json:"proposer_index"`
|
||||
ParentRoot string `json:"parent_root"`
|
||||
StateRoot string `json:"state_root"`
|
||||
}
|
||||
|
||||
//export goCallback
|
||||
func goCallback(json *C.char) {
|
||||
goStr := C.GoString(json)
|
||||
//C.free(unsafe.Pointer(json))
|
||||
fmt.Println("### goCallback " + goStr)
|
||||
// var hdr BeaconBlockHeader
|
||||
// err := json.NewDecoder([]byte(goStr)).Decode(&hdr)
|
||||
// if err != nil {
|
||||
// fmt.Println("### goCallback json parse error: " + err)
|
||||
// }
|
||||
// fmt.Println("Unmarshal result: " + hdr)
|
||||
}
|
||||
func createTomlFile(cfg *Config) string {
|
||||
var buffer bytes.Buffer
|
||||
err := toml.NewEncoder(&buffer).Encode(cfg)
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
tomlFileName := "config.toml"
|
||||
f, err := os.Create(tomlFileName)
|
||||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
defer f.Close()
|
||||
f.WriteString(buffer.String())
|
||||
|
||||
return tomlFileName
|
||||
}
|
||||
|
||||
func StartLightClient(ctx context.Context, cfg *Config) {
|
||||
fmt.Println("vim-go")
|
||||
cb := (C.callback_type)(unsafe.Pointer(C.goCallback_cgo))
|
||||
C.setOptimisticHeaderCallback(cb)
|
||||
C.setFinalizedHeaderCallback(cb)
|
||||
fmt.Println("vim-go 2")
|
||||
|
||||
go func() {
|
||||
runtime.LockOSThread()
|
||||
// tomlFileName := createTomlFile(cfg)
|
||||
// configCStr := C.CString(tomlFileName)
|
||||
// C.startLc(configCStr)
|
||||
defer runtime.UnlockOSThread()
|
||||
jsonBytes, _ := json.Marshal(cfg)
|
||||
jsonStr := string(jsonBytes)
|
||||
fmt.Println("### jsonStr: ", jsonStr)
|
||||
configCStr := C.CString(jsonStr)
|
||||
C.startProxyViaJson(configCStr)
|
||||
fmt.Println("inside go-func after startLcViaJson")
|
||||
}()
|
||||
go func() {
|
||||
fmt.Println("Before range ctx.Done()")
|
||||
for range ctx.Done() {
|
||||
fmt.Println("inside go-func ctx.Done()")
|
||||
C.quit()
|
||||
}
|
||||
}()
|
||||
fmt.Println("vim-go 3")
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user