Compare commits

...

6 Commits
v1.9 ... main

Author SHA1 Message Date
wangjian d4bc0298e1 1、修改bug 2024-12-13 12:07:42 +08:00
wangjian e9e2d833c4 1、修改bug 2024-12-13 11:50:56 +08:00
wangjian 47b7490878 1、修改bug 2023-04-21 10:53:04 +08:00
wangjian 9403c4d01e 1、修改bug 2023-04-05 23:35:16 +08:00
wangjian 033e5f845d 1、修改bug 2023-04-05 21:17:46 +08:00
wangjian be7c3e11c6 1、修改bug 2023-04-05 20:59:07 +08:00
6 changed files with 60 additions and 52 deletions

10
ap.go
View File

@ -71,7 +71,7 @@ func (s *accessPoint) SetDataTag(tag frame.Tag) {
// Close will close the connection to MessageQueue.
func (s *accessPoint) Close() error {
if err := s.client.Close(); err != nil {
log.Errorf("%sClose(): %v", apLogPrefix, err)
log.Errorf("%s Close(): %v", apLogPrefix, err)
return err
}
log.Debugf("%s is closed", apLogPrefix)
@ -89,7 +89,7 @@ func (s *accessPoint) Connect() error {
err := s.client.Connect(context.Background(), s.mqEndpoint)
if err != nil {
log.Errorf("%sConnect() error: %s", apLogPrefix, err)
log.Errorf("%s Connect() error: %s", apLogPrefix, err)
}
return err
}
@ -99,8 +99,8 @@ func (s *accessPoint) WriteWithTag(tag frame.Tag, data []byte) error {
f := frame.NewDataFrame()
f.SetCarriage(tag, data)
f.SetSourceId(s.client.ClientId())
log.Debugf("%sWriteWithTag: tid=%s, source_id=%s, data[%d]=%# x",
apLogPrefix, f.TransactionId(), f.SourceId(), len(data), frame.Shortly(data))
log.Debugf("%s WriteWithTag: tid=%s, source_id=%s, data[%d]",
apLogPrefix, f.TransactionId(), f.SourceId(), len(data))
return s.client.WriteFrame(f)
}
@ -112,7 +112,7 @@ func (s *accessPoint) SetErrorHandler(fn func(err error)) {
// SetReceiveHandler [Experimental] set to observe handler function
func (s *accessPoint) SetReceiveHandler(fn func(frame.Tag, []byte)) {
s.fn = fn
log.Debugf("%sSetReceiveHandler(%v)", apLogPrefix, s.fn)
log.Debugf("%s SetReceiveHandler(%v)", apLogPrefix, s.fn)
}
// Broadcast Write the data to all downstream

View File

@ -3,6 +3,7 @@ package main
import (
"crypto/sha1"
"fmt"
"git.hpds.cc/Component/network/frame"
"git.hpds.cc/Component/network/log"
"git.hpds.cc/pavement/hpds_node"
"os"
@ -25,7 +26,7 @@ func main() {
)
defer sf.Close()
sf.SetHandler(Handler)
_ = sf.SetHandler(Handler)
err := sf.Connect()
if err != nil {
@ -37,7 +38,7 @@ func main() {
}
// Handler process the data in the stream
func Handler(img []byte) (byte, []byte) {
func Handler(img []byte) (frame.Tag, []byte) {
// Initialize WasmEdge's VM
//vmConf, vm := initVM()
//bg := bindgen.Instantiate(vm)

56
go.mod
View File

@ -1,41 +1,51 @@
module git.hpds.cc/pavement/hpds_node
go 1.19
go 1.23
toolchain go1.23.4
require (
git.hpds.cc/Component/network v0.0.0-20230405091029-b109c53056fb
git.hpds.cc/Component/network v0.0.0-20241213034701-8d0c63079944
github.com/disintegration/imaging v1.6.2
github.com/stretchr/testify v1.8.0
github.com/u2takey/ffmpeg-go v0.4.1
github.com/quic-go/quic-go v0.48.2
github.com/stretchr/testify v1.10.0
github.com/u2takey/ffmpeg-go v0.5.0
gopkg.in/yaml.v3 v3.0.1
)
require (
git.hpds.cc/Component/mq_coder v0.0.0-20221010064749-174ae7ae3340 // indirect
github.com/aws/aws-sdk-go v1.38.20 // indirect
git.hpds.cc/Component/mq_coder v0.0.0-20241213034522-3a3512d94b34 // indirect
github.com/aws/aws-sdk-go v1.55.5 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 // indirect
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect
github.com/go-task/slim-sprig/v3 v3.0.0 // indirect
github.com/golang/mock v1.6.0 // indirect
github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 // indirect
github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/kr/text v0.2.0 // indirect
github.com/matoous/go-nanoid/v2 v2.0.0 // indirect
github.com/onsi/ginkgo/v2 v2.2.0 // indirect
github.com/matoous/go-nanoid/v2 v2.1.0 // indirect
github.com/onsi/ginkgo/v2 v2.22.0 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/quic-go/qtls-go1-19 v0.2.1 // indirect
github.com/quic-go/qtls-go1-20 v0.1.1 // indirect
github.com/quic-go/quic-go v0.33.0 // indirect
github.com/quic-go/qtls-go1-20 v0.3.3 // indirect
github.com/rogpeppe/go-internal v1.9.0 // indirect
github.com/stretchr/objx v0.5.2 // indirect
github.com/u2takey/go-utils v0.3.1 // indirect
go.uber.org/atomic v1.7.0 // indirect
go.uber.org/multierr v1.6.0 // indirect
go.uber.org/zap v1.23.0 // indirect
golang.org/x/crypto v0.4.0 // indirect
golang.org/x/exp v0.0.0-20221205204356-47842c84f3db // indirect
golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8 // indirect
golang.org/x/mod v0.6.0 // indirect
golang.org/x/net v0.4.0 // indirect
golang.org/x/sys v0.3.0 // indirect
golang.org/x/tools v0.2.0 // indirect
gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect
go.uber.org/atomic v1.11.0 // indirect
go.uber.org/mock v0.5.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.27.0 // indirect
golang.org/x/crypto v0.31.0 // indirect
golang.org/x/exp v0.0.0-20241210194714-1829a127f884 // indirect
golang.org/x/image v0.23.0 // indirect
golang.org/x/mod v0.22.0 // indirect
golang.org/x/net v0.32.0 // indirect
golang.org/x/sync v0.10.0 // indirect
golang.org/x/sys v0.28.0 // indirect
golang.org/x/tools v0.28.0 // indirect
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
)
//replace (
// git.hpds.cc/Component/network => ../network
//)

View File

@ -21,11 +21,11 @@ func (z *messageQueue) init() {
go func() {
c := make(chan os.Signal, 1)
signal.Notify(c, syscall.SIGTERM, syscall.SIGUSR2, syscall.SIGUSR1, syscall.SIGINT)
log.Printf("%sListening SIGUSR1, SIGUSR2, SIGTERM/SIGINT...", mqLogPrefix)
log.Infof("%sListening SIGUSR1, SIGUSR2, SIGTERM/SIGINT...", mqLogPrefix)
for p1 := range c {
log.Printf("Received signal: %s", p1)
log.Infof("Received signal: %s", p1)
if p1 == syscall.SIGTERM || p1 == syscall.SIGINT {
log.Printf("graceful shutting down ... %s", p1)
log.Infof("graceful shutting down ... %s", p1)
_ = z.Close()
os.Exit(0)
} else if p1 == syscall.SIGUSR2 {
@ -33,7 +33,7 @@ func (z *messageQueue) init() {
runtime.ReadMemStats(&m)
fmt.Printf("\tNumGC = %v\n", m.NumGC)
} else if p1 == syscall.SIGUSR1 {
log.Printf("print MessageQueue stats(): %d", z.Stats())
log.Infof("print MessageQueue stats(): %d", z.Stats())
}
}
}()

View File

@ -13,11 +13,11 @@ func (z *messageQueue) init() {
go func() {
c := make(chan os.Signal, 1)
signal.Notify(c, syscall.SIGTERM, syscall.SIGINT)
log.Printf("%sListening SIGTERM/SIGINT...", mqLogPrefix)
log.Infof("%s Listening SIGTERM/SIGINT...", mqLogPrefix)
for p1 := range c {
log.Printf("Received signal: %s", p1)
if p1 == syscall.SIGTERM || p1 == syscall.SIGINT {
log.Printf("graceful shutting down ... %s", p1)
log.Infof("%s graceful shutting down ... %s", mqLogPrefix, p1)
os.Exit(0)
}
}

View File

@ -61,22 +61,19 @@ type streamFunction struct {
// Deprecated: use hpds.WithObserveDataTags instead
func (s *streamFunction) SetObserveDataTags(tag ...frame.Tag) {
s.client.SetObserveDataTags(tag...)
//co := network.WithObserveDataTags(tag...)
//s.client.
//s.client.SetObserveDataTags(tag...)
s.client.Logger().Debugf("%sSetObserveDataTag(%v)", streamFunctionLogPrefix, s.observeDataTags)
s.client.Logger().Debugf("%s SetObserveDataTag(%v)", streamFunctionLogPrefix, s.observeDataTags)
}
// SetHandler set the handler function, which accept the raw bytes data and return the tag & response.
func (s *streamFunction) SetHandler(fn network.AsyncHandler) error {
s.fn = fn
s.client.Logger().Debugf("%sSetHandler(%v)", streamFunctionLogPrefix, s.fn)
s.client.Logger().Debugf("%s SetHandler(%v)", streamFunctionLogPrefix, s.fn)
return nil
}
func (s *streamFunction) SetPipeHandler(fn network.PipeHandler) error {
s.pfn = fn
s.client.Logger().Debugf("%sSetHandler(%v)", streamFunctionLogPrefix, s.fn)
s.client.Logger().Debugf("%s SetHandler(%v)", streamFunctionLogPrefix, s.fn)
return nil
}
@ -86,7 +83,7 @@ func (s *streamFunction) Connect() error {
s.client.Logger().Debugf("%s Connect()", streamFunctionLogPrefix)
// notify underlying network operations, when data with tag we observed arrived, invoke the func
s.client.SetDataFrameObserver(func(data *frame.DataFrame) {
s.client.Logger().Debugf("%sreceive DataFrame, tag=%# x, carriage=%# x", streamFunctionLogPrefix, data.Tag(), data.GetCarriage())
s.client.Logger().Debugf("%s receive DataFrame, tag=%# x, carriage length=%d", streamFunctionLogPrefix, data.Tag(), len(data.GetCarriage()))
s.onDataFrame(data.GetCarriage(), data.GetMetaFrame())
})
@ -104,7 +101,7 @@ func (s *streamFunction) Connect() error {
for {
data := <-s.pOut
if data != nil {
s.client.Logger().Debugf("%spipe fn send: tag=%#x, data=%# x", streamFunctionLogPrefix, data.Tag, data.Carriage)
s.client.Logger().Debugf("%s pipe fn send: tag=%#x, data=%# x", streamFunctionLogPrefix, data.Tag, data.Carriage)
frm := frame.NewDataFrame()
// todo: frm.SetTransactionId
frm.SetCarriage(data.Tag, data.Carriage)
@ -116,7 +113,7 @@ func (s *streamFunction) Connect() error {
err := s.client.Connect(context.Background(), s.emitterEndpoint)
if err != nil {
s.client.Logger().Errorf("%sConnect() error: %s", streamFunctionLogPrefix, err)
s.client.Logger().Errorf("%s Connect() error: %s", streamFunctionLogPrefix, err)
}
return err
}
@ -133,7 +130,7 @@ func (s *streamFunction) Close() error {
if s.client != nil {
if err := s.client.Close(); err != nil {
s.client.Logger().Errorf("%sClose(): %v", err)
s.client.Logger().Errorf("%s Close(): %v", err)
return err
}
}
@ -143,17 +140,17 @@ func (s *streamFunction) Close() error {
// when DataFrame we observed arrived, invoke the user's function
func (s *streamFunction) onDataFrame(data []byte, metaFrame *frame.MetaFrame) {
s.client.Logger().Infof("%sonDataFrame ->[%s]", streamFunctionLogPrefix, s.name)
s.client.Logger().Infof("%s onDataFrame ->[%s]", streamFunctionLogPrefix, s.name)
if s.fn != nil {
go func() {
s.client.Logger().Debugf("%sexecute-start fn: data[%d]=%# x", streamFunctionLogPrefix, len(data), frame.Shortly(data))
s.client.Logger().Debugf("%s execute-start fn: data[%d]", streamFunctionLogPrefix, len(data)) //, frame.Shortly(data)
// invoke serverless
tag, resp := s.fn(data)
s.client.Logger().Debugf("%sexecute-done fn: tag=%#x, resp[%d]=%# x", streamFunctionLogPrefix, tag, len(resp), frame.Shortly(resp))
s.client.Logger().Debugf("%s execute-done fn: tag=%#x, resp[%d]", streamFunctionLogPrefix, tag, len(resp))
// if resp is not nil, means the user's function has returned something, we should send it to the mq
if len(resp) != 0 {
s.client.Logger().Debugf("%sstart WriteFrame(): tag=%#x, data[%d]=%# x", streamFunctionLogPrefix, tag, len(resp), frame.Shortly(resp))
s.client.Logger().Debugf("%s start WriteFrame(): tag=%#x, data[%d]", streamFunctionLogPrefix, tag, len(resp))
// build a DataFrame
// TODO: seems we should implement a DeepCopy() of MetaFrame in the future
frm := frame.NewDataFrame()
@ -166,10 +163,10 @@ func (s *streamFunction) onDataFrame(data []byte, metaFrame *frame.MetaFrame) {
}
}()
} else if s.pfn != nil {
s.client.Logger().Debugf("%spipe fn receive: data[%d]=%# x", streamFunctionLogPrefix, len(data), data)
s.client.Logger().Debugf("%s pipe fn receive: data[%d]", streamFunctionLogPrefix, len(data))
s.pIn <- data
} else {
s.client.Logger().Warnf("%sStreamFunction is nil", streamFunctionLogPrefix)
s.client.Logger().Warnf("%s StreamFunction is nil", streamFunctionLogPrefix)
}
}