mirror of
https://github.com/TeaOSLab/EdgeCommon.git
synced 2026-04-07 07:45:17 +08:00
节点组合配置时服务间可以共用证书数据
This commit is contained in:
37
pkg/serverconfigs/shared/data_map.go
Normal file
37
pkg/serverconfigs/shared/data_map.go
Normal 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
|
||||
}
|
||||
17
pkg/serverconfigs/shared/data_map_test.go
Normal file
17
pkg/serverconfigs/shared/data_map_test.go
Normal 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)))
|
||||
}
|
||||
Reference in New Issue
Block a user