节点组合配置时服务间可以共用证书数据

This commit is contained in:
GoEdgeLab
2023-03-18 22:15:13 +08:00
parent 786747b718
commit dab1a86d09
20 changed files with 840 additions and 694 deletions

View File

@@ -0,0 +1,37 @@
// Copyright 2023 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn .
package shared
import (
"bytes"
"crypto/md5"
"fmt"
)
var dataMapPrefix = []byte("GOEDGE_DATA_MAP:")
// DataMap 二进制数据共享Map
// 用来减少相同数据占用的空间和内存
type DataMap struct {
Map map[string][]byte
}
// NewDataMap 构建对象
func NewDataMap() *DataMap {
return &DataMap{Map: map[string][]byte{}}
}
// Put 放入数据
func (this *DataMap) Put(data []byte) (keyData []byte) {
var key = string(dataMapPrefix) + fmt.Sprintf("%x", md5.Sum(data))
this.Map[key] = data
return []byte(key)
}
// Read 读取数据
func (this *DataMap) Read(key []byte) []byte {
if bytes.HasPrefix(key, dataMapPrefix) {
return this.Map[string(key)]
}
return key
}

View File

@@ -0,0 +1,17 @@
// Copyright 2023 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn .
package shared_test
import (
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/shared"
"testing"
)
func TestNewDataMap(t *testing.T) {
var m = shared.NewDataMap()
t.Log("data:", m.Read([]byte("e10adc3949ba59abbe56e057f20f883e")))
var key = m.Put([]byte("123456"))
t.Log("keyData:", key)
t.Log("keyString:", string(key))
t.Log("data:", string(m.Read(key)))
}