Merge branch 'protocol-crypto-update' into update-proto
# Conflicts: # commonspace/object/acl/aclrecordproto/aclrecord.pb.go
This commit is contained in:
commit
d9cf1feaee
83
app/app.go
83
app/app.go
@ -20,7 +20,10 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
log = logger.NewNamed("app")
|
log = logger.NewNamed("app")
|
||||||
|
StopDeadline = time.Minute
|
||||||
|
StopWarningAfter = time.Second * 10
|
||||||
|
StartWarningAfter = time.Second * 10
|
||||||
)
|
)
|
||||||
|
|
||||||
// Component is a minimal interface for a common app.Component
|
// Component is a minimal interface for a common app.Component
|
||||||
@ -53,7 +56,8 @@ type ComponentStatable interface {
|
|||||||
type App struct {
|
type App struct {
|
||||||
components []Component
|
components []Component
|
||||||
mu sync.RWMutex
|
mu sync.RWMutex
|
||||||
startStat StartStat
|
startStat Stat
|
||||||
|
stopStat Stat
|
||||||
deviceState int
|
deviceState int
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,18 +71,25 @@ func (app *App) Version() string {
|
|||||||
return GitSummary
|
return GitSummary
|
||||||
}
|
}
|
||||||
|
|
||||||
type StartStat struct {
|
type Stat struct {
|
||||||
SpentMsPerComp map[string]int64
|
SpentMsPerComp map[string]int64
|
||||||
SpentMsTotal int64
|
SpentMsTotal int64
|
||||||
}
|
}
|
||||||
|
|
||||||
// StartStat returns total time spent per comp
|
// StartStat returns total time spent per comp for the last Start
|
||||||
func (app *App) StartStat() StartStat {
|
func (app *App) StartStat() Stat {
|
||||||
app.mu.Lock()
|
app.mu.Lock()
|
||||||
defer app.mu.Unlock()
|
defer app.mu.Unlock()
|
||||||
return app.startStat
|
return app.startStat
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// StopStat returns total time spent per comp for the last Close
|
||||||
|
func (app *App) StopStat() Stat {
|
||||||
|
app.mu.Lock()
|
||||||
|
defer app.mu.Unlock()
|
||||||
|
return app.stopStat
|
||||||
|
}
|
||||||
|
|
||||||
// VersionDescription return the full info about the build
|
// VersionDescription return the full info about the build
|
||||||
func (app *App) VersionDescription() string {
|
func (app *App) VersionDescription() string {
|
||||||
return VersionDescription()
|
return VersionDescription()
|
||||||
@ -158,7 +169,17 @@ func (app *App) Start(ctx context.Context) (err error) {
|
|||||||
app.mu.RLock()
|
app.mu.RLock()
|
||||||
defer app.mu.RUnlock()
|
defer app.mu.RUnlock()
|
||||||
app.startStat.SpentMsPerComp = make(map[string]int64)
|
app.startStat.SpentMsPerComp = make(map[string]int64)
|
||||||
|
var currentComponentStarting string
|
||||||
|
done := make(chan struct{})
|
||||||
|
go func() {
|
||||||
|
select {
|
||||||
|
case <-done:
|
||||||
|
return
|
||||||
|
case <-time.After(StartWarningAfter):
|
||||||
|
l := statLogger(app.stopStat, log).With(zap.String("in_progress", currentComponentStarting))
|
||||||
|
l.Warn("components start in progress")
|
||||||
|
}
|
||||||
|
}()
|
||||||
closeServices := func(idx int) {
|
closeServices := func(idx int) {
|
||||||
for i := idx; i >= 0; i-- {
|
for i := idx; i >= 0; i-- {
|
||||||
if serviceClose, ok := app.components[i].(ComponentRunnable); ok {
|
if serviceClose, ok := app.components[i].(ComponentRunnable); ok {
|
||||||
@ -172,7 +193,7 @@ func (app *App) Start(ctx context.Context) (err error) {
|
|||||||
for i, s := range app.components {
|
for i, s := range app.components {
|
||||||
if err = s.Init(app); err != nil {
|
if err = s.Init(app); err != nil {
|
||||||
closeServices(i)
|
closeServices(i)
|
||||||
return fmt.Errorf("can't init service '%s': %v", s.Name(), err)
|
return fmt.Errorf("can't init service '%s': %w", s.Name(), err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -181,14 +202,20 @@ func (app *App) Start(ctx context.Context) (err error) {
|
|||||||
start := time.Now()
|
start := time.Now()
|
||||||
if err = serviceRun.Run(ctx); err != nil {
|
if err = serviceRun.Run(ctx); err != nil {
|
||||||
closeServices(i)
|
closeServices(i)
|
||||||
return fmt.Errorf("can't run service '%s': %v", serviceRun.Name(), err)
|
return fmt.Errorf("can't run service '%s': %w", serviceRun.Name(), err)
|
||||||
}
|
}
|
||||||
spent := time.Since(start).Milliseconds()
|
spent := time.Since(start).Milliseconds()
|
||||||
app.startStat.SpentMsTotal += spent
|
app.startStat.SpentMsTotal += spent
|
||||||
app.startStat.SpentMsPerComp[s.Name()] = spent
|
app.startStat.SpentMsPerComp[s.Name()] = spent
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
log.Debug("all components started")
|
|
||||||
|
close(done)
|
||||||
|
l := statLogger(app.stopStat, log)
|
||||||
|
if app.startStat.SpentMsTotal > StartWarningAfter.Milliseconds() {
|
||||||
|
l.Warn("all components started")
|
||||||
|
}
|
||||||
|
l.Debug("all components started")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -203,18 +230,41 @@ func stackAllGoroutines() []byte {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func statLogger(stat Stat, ctxLogger logger.CtxLogger) logger.CtxLogger {
|
||||||
|
l := ctxLogger
|
||||||
|
for k, v := range stat.SpentMsPerComp {
|
||||||
|
l = l.With(zap.Int64(k, v))
|
||||||
|
}
|
||||||
|
l = l.With(zap.Int64("total", stat.SpentMsTotal))
|
||||||
|
|
||||||
|
return l
|
||||||
|
}
|
||||||
|
|
||||||
// Close stops the application
|
// Close stops the application
|
||||||
// All components with ComponentRunnable implementation will be closed in the reversed order
|
// All components with ComponentRunnable implementation will be closed in the reversed order
|
||||||
func (app *App) Close(ctx context.Context) error {
|
func (app *App) Close(ctx context.Context) error {
|
||||||
log.Debug("close components...")
|
log.Debug("close components...")
|
||||||
app.mu.RLock()
|
app.mu.RLock()
|
||||||
defer app.mu.RUnlock()
|
defer app.mu.RUnlock()
|
||||||
|
app.stopStat.SpentMsPerComp = make(map[string]int64)
|
||||||
|
var currentComponentStopping string
|
||||||
done := make(chan struct{})
|
done := make(chan struct{})
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
select {
|
select {
|
||||||
case <-done:
|
case <-done:
|
||||||
return
|
return
|
||||||
case <-time.After(time.Minute):
|
case <-time.After(StopWarningAfter):
|
||||||
|
statLogger(app.stopStat, log).
|
||||||
|
With(zap.String("in_progress", currentComponentStopping)).
|
||||||
|
Warn("components close in progress")
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
go func() {
|
||||||
|
select {
|
||||||
|
case <-done:
|
||||||
|
return
|
||||||
|
case <-time.After(StopDeadline):
|
||||||
_, _ = os.Stderr.Write([]byte("app.Close timeout\n"))
|
_, _ = os.Stderr.Write([]byte("app.Close timeout\n"))
|
||||||
_, _ = os.Stderr.Write(stackAllGoroutines())
|
_, _ = os.Stderr.Write(stackAllGoroutines())
|
||||||
panic("app.Close timeout")
|
panic("app.Close timeout")
|
||||||
@ -224,16 +274,27 @@ func (app *App) Close(ctx context.Context) error {
|
|||||||
var errs []string
|
var errs []string
|
||||||
for i := len(app.components) - 1; i >= 0; i-- {
|
for i := len(app.components) - 1; i >= 0; i-- {
|
||||||
if serviceClose, ok := app.components[i].(ComponentRunnable); ok {
|
if serviceClose, ok := app.components[i].(ComponentRunnable); ok {
|
||||||
|
start := time.Now()
|
||||||
|
currentComponentStopping = app.components[i].Name()
|
||||||
if e := serviceClose.Close(ctx); e != nil {
|
if e := serviceClose.Close(ctx); e != nil {
|
||||||
errs = append(errs, fmt.Sprintf("Component '%s' close error: %v", serviceClose.Name(), e))
|
errs = append(errs, fmt.Sprintf("Component '%s' close error: %v", serviceClose.Name(), e))
|
||||||
}
|
}
|
||||||
|
spent := time.Since(start).Milliseconds()
|
||||||
|
app.stopStat.SpentMsTotal += spent
|
||||||
|
app.stopStat.SpentMsPerComp[app.components[i].Name()] = spent
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
close(done)
|
close(done)
|
||||||
if len(errs) > 0 {
|
if len(errs) > 0 {
|
||||||
return errors.New(strings.Join(errs, "\n"))
|
return errors.New(strings.Join(errs, "\n"))
|
||||||
}
|
}
|
||||||
log.Debug("all components have been closed")
|
|
||||||
|
l := statLogger(app.stopStat, log)
|
||||||
|
if app.stopStat.SpentMsTotal > StopWarningAfter.Milliseconds() {
|
||||||
|
l.Warn("all components have been closed")
|
||||||
|
}
|
||||||
|
|
||||||
|
l.Debug("all components have been closed")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -32,6 +32,7 @@ func CtxGetFields(ctx context.Context) (fields []zap.Field) {
|
|||||||
|
|
||||||
type CtxLogger struct {
|
type CtxLogger struct {
|
||||||
*zap.Logger
|
*zap.Logger
|
||||||
|
name string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (cl CtxLogger) DebugCtx(ctx context.Context, msg string, fields ...zap.Field) {
|
func (cl CtxLogger) DebugCtx(ctx context.Context, msg string, fields ...zap.Field) {
|
||||||
@ -51,5 +52,9 @@ func (cl CtxLogger) ErrorCtx(ctx context.Context, msg string, fields ...zap.Fiel
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (cl CtxLogger) With(fields ...zap.Field) CtxLogger {
|
func (cl CtxLogger) With(fields ...zap.Field) CtxLogger {
|
||||||
return CtxLogger{cl.Logger.With(fields...)}
|
return CtxLogger{cl.Logger.With(fields...), cl.name}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cl CtxLogger) Sugar() *zap.SugaredLogger {
|
||||||
|
return NewNamedSugared(cl.name)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,12 +8,13 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
mu sync.Mutex
|
mu sync.Mutex
|
||||||
logger *zap.Logger
|
logger *zap.Logger
|
||||||
loggerConfig zap.Config
|
loggerConfig zap.Config
|
||||||
namedLevels = make(map[string]zap.AtomicLevel)
|
namedLevels = make(map[string]zap.AtomicLevel)
|
||||||
namedGlobs = make(map[string]glob.Glob)
|
namedGlobs = make(map[string]glob.Glob)
|
||||||
namedLoggers = make(map[string]CtxLogger)
|
namedLoggers = make(map[string]CtxLogger)
|
||||||
|
namedSugarLoggers = make(map[string]*zap.SugaredLogger)
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@ -59,10 +60,18 @@ func SetNamedLevels(l map[string]zap.AtomicLevel) {
|
|||||||
|
|
||||||
for name, nl := range namedLoggers {
|
for name, nl := range namedLoggers {
|
||||||
level := getLevel(name)
|
level := getLevel(name)
|
||||||
// this can be racy, but
|
newCore := zap.New(logger.Core()).Named(name).WithOptions(
|
||||||
nl.Logger = zap.New(logger.Core()).WithOptions(
|
|
||||||
zap.IncreaseLevel(level),
|
zap.IncreaseLevel(level),
|
||||||
).Named(name)
|
)
|
||||||
|
*(nl.Logger) = *newCore
|
||||||
|
}
|
||||||
|
|
||||||
|
for name, nl := range namedSugarLoggers {
|
||||||
|
level := getLevel(name)
|
||||||
|
newCore := zap.New(logger.Core()).Named(name).WithOptions(
|
||||||
|
zap.IncreaseLevel(level),
|
||||||
|
).Sugar()
|
||||||
|
*(nl) = *newCore
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100,11 +109,24 @@ func NewNamed(name string, fields ...zap.Field) CtxLogger {
|
|||||||
}
|
}
|
||||||
|
|
||||||
level := getLevel(name)
|
level := getLevel(name)
|
||||||
l := zap.New(logger.Core()).WithOptions(
|
l := zap.New(logger.Core()).Named(name).WithOptions(zap.IncreaseLevel(level),
|
||||||
zap.IncreaseLevel(level),
|
zap.Fields(fields...))
|
||||||
).Named(name)
|
|
||||||
|
|
||||||
ctxL := CtxLogger{l}
|
ctxL := CtxLogger{Logger: l, name: name}
|
||||||
namedLoggers[name] = ctxL
|
namedLoggers[name] = ctxL
|
||||||
return ctxL
|
return ctxL
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func NewNamedSugared(name string) *zap.SugaredLogger {
|
||||||
|
mu.Lock()
|
||||||
|
defer mu.Unlock()
|
||||||
|
|
||||||
|
if l, nameExists := namedSugarLoggers[name]; nameExists {
|
||||||
|
return l
|
||||||
|
}
|
||||||
|
|
||||||
|
level := getLevel(name)
|
||||||
|
l := zap.New(logger.Core()).Named(name).Sugar().WithOptions(zap.IncreaseLevel(level))
|
||||||
|
namedSugarLoggers[name] = l
|
||||||
|
return l
|
||||||
|
}
|
||||||
|
|||||||
@ -21,6 +21,7 @@ type ctxKey uint
|
|||||||
|
|
||||||
const (
|
const (
|
||||||
ctxKeySpaceId ctxKey = iota
|
ctxKeySpaceId ctxKey = iota
|
||||||
|
ctxKeyFileId
|
||||||
)
|
)
|
||||||
|
|
||||||
type BlockStore interface {
|
type BlockStore interface {
|
||||||
@ -48,3 +49,12 @@ func CtxGetSpaceId(ctx context.Context) (spaceId string) {
|
|||||||
spaceId, _ = ctx.Value(ctxKeySpaceId).(string)
|
spaceId, _ = ctx.Value(ctxKeySpaceId).(string)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func CtxWithFileId(ctx context.Context, spaceId string) context.Context {
|
||||||
|
return context.WithValue(ctx, ctxKeyFileId, spaceId)
|
||||||
|
}
|
||||||
|
|
||||||
|
func CtxGetFileId(ctx context.Context) (spaceId string) {
|
||||||
|
spaceId, _ = ctx.Value(ctxKeyFileId).(string)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -44,8 +44,10 @@ type DRPCFileClient interface {
|
|||||||
BlockPush(ctx context.Context, in *BlockPushRequest) (*BlockPushResponse, error)
|
BlockPush(ctx context.Context, in *BlockPushRequest) (*BlockPushResponse, error)
|
||||||
BlocksCheck(ctx context.Context, in *BlocksCheckRequest) (*BlocksCheckResponse, error)
|
BlocksCheck(ctx context.Context, in *BlocksCheckRequest) (*BlocksCheckResponse, error)
|
||||||
BlocksBind(ctx context.Context, in *BlocksBindRequest) (*BlocksBindResponse, error)
|
BlocksBind(ctx context.Context, in *BlocksBindRequest) (*BlocksBindResponse, error)
|
||||||
BlocksDelete(ctx context.Context, in *BlocksDeleteRequest) (*BlocksDeleteResponse, error)
|
FilesDelete(ctx context.Context, in *FilesDeleteRequest) (*FilesDeleteResponse, error)
|
||||||
|
FilesInfo(ctx context.Context, in *FilesInfoRequest) (*FilesInfoResponse, error)
|
||||||
Check(ctx context.Context, in *CheckRequest) (*CheckResponse, error)
|
Check(ctx context.Context, in *CheckRequest) (*CheckResponse, error)
|
||||||
|
SpaceInfo(ctx context.Context, in *SpaceInfoRequest) (*SpaceInfoResponse, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type drpcFileClient struct {
|
type drpcFileClient struct {
|
||||||
@ -94,9 +96,18 @@ func (c *drpcFileClient) BlocksBind(ctx context.Context, in *BlocksBindRequest)
|
|||||||
return out, nil
|
return out, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *drpcFileClient) BlocksDelete(ctx context.Context, in *BlocksDeleteRequest) (*BlocksDeleteResponse, error) {
|
func (c *drpcFileClient) FilesDelete(ctx context.Context, in *FilesDeleteRequest) (*FilesDeleteResponse, error) {
|
||||||
out := new(BlocksDeleteResponse)
|
out := new(FilesDeleteResponse)
|
||||||
err := c.cc.Invoke(ctx, "/filesync.File/BlocksDelete", drpcEncoding_File_commonfile_fileproto_protos_file_proto{}, in, out)
|
err := c.cc.Invoke(ctx, "/filesync.File/FilesDelete", drpcEncoding_File_commonfile_fileproto_protos_file_proto{}, in, out)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *drpcFileClient) FilesInfo(ctx context.Context, in *FilesInfoRequest) (*FilesInfoResponse, error) {
|
||||||
|
out := new(FilesInfoResponse)
|
||||||
|
err := c.cc.Invoke(ctx, "/filesync.File/FilesInfo", drpcEncoding_File_commonfile_fileproto_protos_file_proto{}, in, out)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -112,13 +123,24 @@ func (c *drpcFileClient) Check(ctx context.Context, in *CheckRequest) (*CheckRes
|
|||||||
return out, nil
|
return out, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (c *drpcFileClient) SpaceInfo(ctx context.Context, in *SpaceInfoRequest) (*SpaceInfoResponse, error) {
|
||||||
|
out := new(SpaceInfoResponse)
|
||||||
|
err := c.cc.Invoke(ctx, "/filesync.File/SpaceInfo", drpcEncoding_File_commonfile_fileproto_protos_file_proto{}, in, out)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
|
||||||
type DRPCFileServer interface {
|
type DRPCFileServer interface {
|
||||||
BlockGet(context.Context, *BlockGetRequest) (*BlockGetResponse, error)
|
BlockGet(context.Context, *BlockGetRequest) (*BlockGetResponse, error)
|
||||||
BlockPush(context.Context, *BlockPushRequest) (*BlockPushResponse, error)
|
BlockPush(context.Context, *BlockPushRequest) (*BlockPushResponse, error)
|
||||||
BlocksCheck(context.Context, *BlocksCheckRequest) (*BlocksCheckResponse, error)
|
BlocksCheck(context.Context, *BlocksCheckRequest) (*BlocksCheckResponse, error)
|
||||||
BlocksBind(context.Context, *BlocksBindRequest) (*BlocksBindResponse, error)
|
BlocksBind(context.Context, *BlocksBindRequest) (*BlocksBindResponse, error)
|
||||||
BlocksDelete(context.Context, *BlocksDeleteRequest) (*BlocksDeleteResponse, error)
|
FilesDelete(context.Context, *FilesDeleteRequest) (*FilesDeleteResponse, error)
|
||||||
|
FilesInfo(context.Context, *FilesInfoRequest) (*FilesInfoResponse, error)
|
||||||
Check(context.Context, *CheckRequest) (*CheckResponse, error)
|
Check(context.Context, *CheckRequest) (*CheckResponse, error)
|
||||||
|
SpaceInfo(context.Context, *SpaceInfoRequest) (*SpaceInfoResponse, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type DRPCFileUnimplementedServer struct{}
|
type DRPCFileUnimplementedServer struct{}
|
||||||
@ -139,7 +161,11 @@ func (s *DRPCFileUnimplementedServer) BlocksBind(context.Context, *BlocksBindReq
|
|||||||
return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented)
|
return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *DRPCFileUnimplementedServer) BlocksDelete(context.Context, *BlocksDeleteRequest) (*BlocksDeleteResponse, error) {
|
func (s *DRPCFileUnimplementedServer) FilesDelete(context.Context, *FilesDeleteRequest) (*FilesDeleteResponse, error) {
|
||||||
|
return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *DRPCFileUnimplementedServer) FilesInfo(context.Context, *FilesInfoRequest) (*FilesInfoResponse, error) {
|
||||||
return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented)
|
return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -147,9 +173,13 @@ func (s *DRPCFileUnimplementedServer) Check(context.Context, *CheckRequest) (*Ch
|
|||||||
return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented)
|
return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *DRPCFileUnimplementedServer) SpaceInfo(context.Context, *SpaceInfoRequest) (*SpaceInfoResponse, error) {
|
||||||
|
return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented)
|
||||||
|
}
|
||||||
|
|
||||||
type DRPCFileDescription struct{}
|
type DRPCFileDescription struct{}
|
||||||
|
|
||||||
func (DRPCFileDescription) NumMethods() int { return 6 }
|
func (DRPCFileDescription) NumMethods() int { return 8 }
|
||||||
|
|
||||||
func (DRPCFileDescription) Method(n int) (string, drpc.Encoding, drpc.Receiver, interface{}, bool) {
|
func (DRPCFileDescription) Method(n int) (string, drpc.Encoding, drpc.Receiver, interface{}, bool) {
|
||||||
switch n {
|
switch n {
|
||||||
@ -190,15 +220,24 @@ func (DRPCFileDescription) Method(n int) (string, drpc.Encoding, drpc.Receiver,
|
|||||||
)
|
)
|
||||||
}, DRPCFileServer.BlocksBind, true
|
}, DRPCFileServer.BlocksBind, true
|
||||||
case 4:
|
case 4:
|
||||||
return "/filesync.File/BlocksDelete", drpcEncoding_File_commonfile_fileproto_protos_file_proto{},
|
return "/filesync.File/FilesDelete", drpcEncoding_File_commonfile_fileproto_protos_file_proto{},
|
||||||
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
|
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
|
||||||
return srv.(DRPCFileServer).
|
return srv.(DRPCFileServer).
|
||||||
BlocksDelete(
|
FilesDelete(
|
||||||
ctx,
|
ctx,
|
||||||
in1.(*BlocksDeleteRequest),
|
in1.(*FilesDeleteRequest),
|
||||||
)
|
)
|
||||||
}, DRPCFileServer.BlocksDelete, true
|
}, DRPCFileServer.FilesDelete, true
|
||||||
case 5:
|
case 5:
|
||||||
|
return "/filesync.File/FilesInfo", drpcEncoding_File_commonfile_fileproto_protos_file_proto{},
|
||||||
|
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
|
||||||
|
return srv.(DRPCFileServer).
|
||||||
|
FilesInfo(
|
||||||
|
ctx,
|
||||||
|
in1.(*FilesInfoRequest),
|
||||||
|
)
|
||||||
|
}, DRPCFileServer.FilesInfo, true
|
||||||
|
case 6:
|
||||||
return "/filesync.File/Check", drpcEncoding_File_commonfile_fileproto_protos_file_proto{},
|
return "/filesync.File/Check", drpcEncoding_File_commonfile_fileproto_protos_file_proto{},
|
||||||
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
|
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
|
||||||
return srv.(DRPCFileServer).
|
return srv.(DRPCFileServer).
|
||||||
@ -207,6 +246,15 @@ func (DRPCFileDescription) Method(n int) (string, drpc.Encoding, drpc.Receiver,
|
|||||||
in1.(*CheckRequest),
|
in1.(*CheckRequest),
|
||||||
)
|
)
|
||||||
}, DRPCFileServer.Check, true
|
}, DRPCFileServer.Check, true
|
||||||
|
case 7:
|
||||||
|
return "/filesync.File/SpaceInfo", drpcEncoding_File_commonfile_fileproto_protos_file_proto{},
|
||||||
|
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
|
||||||
|
return srv.(DRPCFileServer).
|
||||||
|
SpaceInfo(
|
||||||
|
ctx,
|
||||||
|
in1.(*SpaceInfoRequest),
|
||||||
|
)
|
||||||
|
}, DRPCFileServer.SpaceInfo, true
|
||||||
default:
|
default:
|
||||||
return "", nil, nil, nil, false
|
return "", nil, nil, nil, false
|
||||||
}
|
}
|
||||||
@ -280,16 +328,32 @@ func (x *drpcFile_BlocksBindStream) SendAndClose(m *BlocksBindResponse) error {
|
|||||||
return x.CloseSend()
|
return x.CloseSend()
|
||||||
}
|
}
|
||||||
|
|
||||||
type DRPCFile_BlocksDeleteStream interface {
|
type DRPCFile_FilesDeleteStream interface {
|
||||||
drpc.Stream
|
drpc.Stream
|
||||||
SendAndClose(*BlocksDeleteResponse) error
|
SendAndClose(*FilesDeleteResponse) error
|
||||||
}
|
}
|
||||||
|
|
||||||
type drpcFile_BlocksDeleteStream struct {
|
type drpcFile_FilesDeleteStream struct {
|
||||||
drpc.Stream
|
drpc.Stream
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *drpcFile_BlocksDeleteStream) SendAndClose(m *BlocksDeleteResponse) error {
|
func (x *drpcFile_FilesDeleteStream) SendAndClose(m *FilesDeleteResponse) error {
|
||||||
|
if err := x.MsgSend(m, drpcEncoding_File_commonfile_fileproto_protos_file_proto{}); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return x.CloseSend()
|
||||||
|
}
|
||||||
|
|
||||||
|
type DRPCFile_FilesInfoStream interface {
|
||||||
|
drpc.Stream
|
||||||
|
SendAndClose(*FilesInfoResponse) error
|
||||||
|
}
|
||||||
|
|
||||||
|
type drpcFile_FilesInfoStream struct {
|
||||||
|
drpc.Stream
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *drpcFile_FilesInfoStream) SendAndClose(m *FilesInfoResponse) error {
|
||||||
if err := x.MsgSend(m, drpcEncoding_File_commonfile_fileproto_protos_file_proto{}); err != nil {
|
if err := x.MsgSend(m, drpcEncoding_File_commonfile_fileproto_protos_file_proto{}); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -311,3 +375,19 @@ func (x *drpcFile_CheckStream) SendAndClose(m *CheckResponse) error {
|
|||||||
}
|
}
|
||||||
return x.CloseSend()
|
return x.CloseSend()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type DRPCFile_SpaceInfoStream interface {
|
||||||
|
drpc.Stream
|
||||||
|
SendAndClose(*SpaceInfoResponse) error
|
||||||
|
}
|
||||||
|
|
||||||
|
type drpcFile_SpaceInfoStream struct {
|
||||||
|
drpc.Stream
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *drpcFile_SpaceInfoStream) SendAndClose(m *SpaceInfoResponse) error {
|
||||||
|
if err := x.MsgSend(m, drpcEncoding_File_commonfile_fileproto_protos_file_proto{}); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return x.CloseSend()
|
||||||
|
}
|
||||||
|
|||||||
@ -7,7 +7,11 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
errGroup = rpcerr.ErrGroup(fileproto.ErrCodes_ErrorOffset)
|
errGroup = rpcerr.ErrGroup(fileproto.ErrCodes_ErrorOffset)
|
||||||
ErrUnexpected = errGroup.Register(fmt.Errorf("unexpected fileproto error"), uint64(fileproto.ErrCodes_Unexpected))
|
ErrUnexpected = errGroup.Register(fmt.Errorf("unexpected fileproto error"), uint64(fileproto.ErrCodes_Unexpected))
|
||||||
ErrCIDNotFound = errGroup.Register(fmt.Errorf("CID not found"), uint64(fileproto.ErrCodes_CIDNotFound))
|
ErrCIDNotFound = errGroup.Register(fmt.Errorf("CID not found"), uint64(fileproto.ErrCodes_CIDNotFound))
|
||||||
|
ErrForbidden = errGroup.Register(fmt.Errorf("forbidden"), uint64(fileproto.ErrCodes_Forbidden))
|
||||||
|
ErrSpaceLimitExceeded = errGroup.Register(fmt.Errorf("space limit exceeded"), uint64(fileproto.ErrCodes_SpaceLimitExceeded))
|
||||||
|
ErrQuerySizeExceeded = errGroup.Register(fmt.Errorf("query size exceeded"), uint64(fileproto.ErrCodes_QuerySizeExceeded))
|
||||||
|
ErrWrongHash = errGroup.Register(fmt.Errorf("wrong block hash"), uint64(fileproto.ErrCodes_WrongHash))
|
||||||
)
|
)
|
||||||
|
|||||||
@ -6,6 +6,10 @@ option go_package = "commonfile/fileproto";
|
|||||||
enum ErrCodes {
|
enum ErrCodes {
|
||||||
Unexpected = 0;
|
Unexpected = 0;
|
||||||
CIDNotFound = 1;
|
CIDNotFound = 1;
|
||||||
|
Forbidden = 2;
|
||||||
|
SpaceLimitExceeded = 3;
|
||||||
|
QuerySizeExceeded = 4;
|
||||||
|
WrongHash = 5;
|
||||||
ErrorOffset = 200;
|
ErrorOffset = 200;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -18,10 +22,14 @@ service File {
|
|||||||
rpc BlocksCheck(BlocksCheckRequest) returns (BlocksCheckResponse);
|
rpc BlocksCheck(BlocksCheckRequest) returns (BlocksCheckResponse);
|
||||||
// BlocksBind binds CIDs to space
|
// BlocksBind binds CIDs to space
|
||||||
rpc BlocksBind(BlocksBindRequest) returns (BlocksBindResponse);
|
rpc BlocksBind(BlocksBindRequest) returns (BlocksBindResponse);
|
||||||
// BlocksDelete deletes block from space
|
// FilesDelete deletes files by id
|
||||||
rpc BlocksDelete(BlocksDeleteRequest) returns (BlocksDeleteResponse);
|
rpc FilesDelete(FilesDeleteRequest) returns (FilesDeleteResponse);
|
||||||
|
// FilesInfo return info by given files id
|
||||||
|
rpc FilesInfo(FilesInfoRequest) returns (FilesInfoResponse);
|
||||||
// Check checks the connection and credentials
|
// Check checks the connection and credentials
|
||||||
rpc Check(CheckRequest) returns (CheckResponse);
|
rpc Check(CheckRequest) returns (CheckResponse);
|
||||||
|
// SpaceInfo returns usage, limit, etc about space
|
||||||
|
rpc SpaceInfo(SpaceInfoRequest) returns (SpaceInfoResponse);
|
||||||
}
|
}
|
||||||
|
|
||||||
message BlockGetRequest {
|
message BlockGetRequest {
|
||||||
@ -36,8 +44,9 @@ message BlockGetResponse {
|
|||||||
|
|
||||||
message BlockPushRequest {
|
message BlockPushRequest {
|
||||||
string spaceId = 1;
|
string spaceId = 1;
|
||||||
bytes cid = 2;
|
string fileId = 2;
|
||||||
bytes data = 3;
|
bytes cid = 3;
|
||||||
|
bytes data = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
message BlockPushResponse {}
|
message BlockPushResponse {}
|
||||||
@ -72,14 +81,50 @@ enum AvailabilityStatus {
|
|||||||
|
|
||||||
message BlocksBindRequest {
|
message BlocksBindRequest {
|
||||||
string spaceId = 1;
|
string spaceId = 1;
|
||||||
repeated bytes cids = 2;
|
string fileId = 2;
|
||||||
|
repeated bytes cids = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
message BlocksBindResponse {}
|
message BlocksBindResponse {}
|
||||||
|
|
||||||
|
|
||||||
|
message FilesDeleteRequest {
|
||||||
|
string spaceId = 1;
|
||||||
|
repeated string fileIds = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message FilesDeleteResponse {}
|
||||||
|
|
||||||
|
message FilesInfoRequest {
|
||||||
|
string spaceId = 1;
|
||||||
|
repeated string fileIds = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message FilesInfoResponse {
|
||||||
|
repeated FileInfo filesInfo = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message FileInfo {
|
||||||
|
string fileId = 1;
|
||||||
|
uint64 usageBytes = 2;
|
||||||
|
uint32 cidsCount = 3;
|
||||||
|
}
|
||||||
|
|
||||||
message CheckRequest {}
|
message CheckRequest {}
|
||||||
|
|
||||||
message CheckResponse {
|
message CheckResponse {
|
||||||
repeated string spaceIds = 1;
|
repeated string spaceIds = 1;
|
||||||
bool allowWrite = 2;
|
bool allowWrite = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message SpaceInfoRequest {
|
||||||
|
string spaceId = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message SpaceInfoResponse {
|
||||||
|
uint64 limitBytes = 1;
|
||||||
|
uint64 usageBytes = 2;
|
||||||
|
uint64 cidsCount = 3;
|
||||||
|
uint64 filesCount = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@ -22,6 +22,10 @@ const CName = "common.commonfile.fileservice"
|
|||||||
|
|
||||||
var log = logger.NewNamed(CName)
|
var log = logger.NewNamed(CName)
|
||||||
|
|
||||||
|
const (
|
||||||
|
ChunkSize = 1 << 20
|
||||||
|
)
|
||||||
|
|
||||||
func New() FileService {
|
func New() FileService {
|
||||||
return &fileService{}
|
return &fileService{}
|
||||||
}
|
}
|
||||||
@ -74,7 +78,7 @@ func (fs *fileService) AddFile(ctx context.Context, r io.Reader) (ipld.Node, err
|
|||||||
Maxlinks: helpers.DefaultLinksPerBlock,
|
Maxlinks: helpers.DefaultLinksPerBlock,
|
||||||
CidBuilder: &fs.prefix,
|
CidBuilder: &fs.prefix,
|
||||||
}
|
}
|
||||||
dbh, err := dbp.New(chunker.DefaultSplitter(r))
|
dbh, err := dbp.New(chunker.NewSizeSplitter(r, ChunkSize))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|||||||
@ -733,9 +733,10 @@ func (m *AclUserInvite) GetPermissions() AclUserPermissions {
|
|||||||
|
|
||||||
type AclUserJoin struct {
|
type AclUserJoin struct {
|
||||||
Identity []byte `protobuf:"bytes,1,opt,name=identity,proto3" json:"identity,omitempty"`
|
Identity []byte `protobuf:"bytes,1,opt,name=identity,proto3" json:"identity,omitempty"`
|
||||||
AcceptSignature []byte `protobuf:"bytes,2,opt,name=acceptSignature,proto3" json:"acceptSignature,omitempty"`
|
EncryptionKey []byte `protobuf:"bytes,2,opt,name=encryptionKey,proto3" json:"encryptionKey,omitempty"`
|
||||||
AcceptPubKey []byte `protobuf:"bytes,3,opt,name=acceptPubKey,proto3" json:"acceptPubKey,omitempty"`
|
AcceptSignature []byte `protobuf:"bytes,3,opt,name=acceptSignature,proto3" json:"acceptSignature,omitempty"`
|
||||||
EncryptedReadKeys [][]byte `protobuf:"bytes,4,rep,name=encryptedReadKeys,proto3" json:"encryptedReadKeys,omitempty"`
|
AcceptPubKey []byte `protobuf:"bytes,4,opt,name=acceptPubKey,proto3" json:"acceptPubKey,omitempty"`
|
||||||
|
EncryptedReadKeys [][]byte `protobuf:"bytes,5,rep,name=encryptedReadKeys,proto3" json:"encryptedReadKeys,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *AclUserJoin) Reset() { *m = AclUserJoin{} }
|
func (m *AclUserJoin) Reset() { *m = AclUserJoin{} }
|
||||||
@ -778,6 +779,13 @@ func (m *AclUserJoin) GetIdentity() []byte {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *AclUserJoin) GetEncryptionKey() []byte {
|
||||||
|
if m != nil {
|
||||||
|
return m.EncryptionKey
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (m *AclUserJoin) GetAcceptSignature() []byte {
|
func (m *AclUserJoin) GetAcceptSignature() []byte {
|
||||||
if m != nil {
|
if m != nil {
|
||||||
return m.AcceptSignature
|
return m.AcceptSignature
|
||||||
@ -1144,65 +1152,66 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var fileDescriptor_c8e9f754f34e929b = []byte{
|
var fileDescriptor_c8e9f754f34e929b = []byte{
|
||||||
// 926 bytes of a gzipped FileDescriptorProto
|
// 943 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0x4f, 0x6f, 0x1b, 0x45,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0x4f, 0x6f, 0x1b, 0x45,
|
||||||
0x14, 0xf7, 0xd8, 0x49, 0x1c, 0x3f, 0x9b, 0xc4, 0x19, 0xa0, 0x5d, 0x45, 0xc5, 0x8a, 0x56, 0x42,
|
0x14, 0xf7, 0xda, 0x49, 0x1c, 0x3f, 0xbb, 0x89, 0x33, 0x40, 0xbb, 0x8a, 0x8a, 0x15, 0xad, 0x40,
|
||||||
0x8a, 0xaa, 0xca, 0x11, 0x06, 0x29, 0x55, 0x84, 0xa8, 0xdc, 0x52, 0x64, 0xb7, 0x42, 0xaa, 0x26,
|
0x8a, 0xaa, 0xca, 0x11, 0x06, 0x29, 0x55, 0x84, 0xa8, 0xdc, 0x52, 0x64, 0xb7, 0x42, 0xaa, 0x26,
|
||||||
0x40, 0x51, 0x39, 0x4d, 0x66, 0x47, 0xc9, 0x50, 0x7b, 0x77, 0x35, 0x33, 0x36, 0xf2, 0xa7, 0x80,
|
0x40, 0x51, 0x39, 0x4d, 0x66, 0x47, 0xf1, 0xd0, 0xf5, 0xee, 0x6a, 0x66, 0x6c, 0xe4, 0x4f, 0x01,
|
||||||
0x1b, 0x57, 0x2e, 0x48, 0x7c, 0x14, 0x8e, 0xbd, 0x20, 0x71, 0x44, 0x89, 0xf8, 0x08, 0xdc, 0xd1,
|
0x37, 0xae, 0x1c, 0xf9, 0x28, 0x48, 0x5c, 0x72, 0x41, 0xe2, 0x88, 0x12, 0xf1, 0x11, 0xb8, 0xa3,
|
||||||
0xcc, 0xec, 0xff, 0x75, 0x2c, 0x38, 0xc0, 0x21, 0xf1, 0xce, 0x7b, 0xbf, 0x37, 0xf3, 0x7b, 0xbf,
|
0x99, 0xd9, 0xff, 0xeb, 0x58, 0x70, 0x80, 0x43, 0xe2, 0x9d, 0xf7, 0x7e, 0xef, 0xcd, 0xef, 0xfd,
|
||||||
0x79, 0xef, 0xed, 0xc2, 0xc7, 0x2c, 0x9a, 0xcf, 0xa3, 0x50, 0xc5, 0x94, 0xf1, 0x93, 0xe8, 0xe2,
|
0xe6, 0xcd, 0xdb, 0x85, 0x8f, 0x69, 0x34, 0x9f, 0x47, 0xa1, 0x8c, 0x09, 0x65, 0x27, 0xd1, 0xc5,
|
||||||
0x5b, 0xce, 0xf4, 0x09, 0x65, 0x33, 0xf3, 0x27, 0x39, 0x8b, 0x64, 0x10, 0xcb, 0x48, 0x47, 0x27,
|
0xb7, 0x8c, 0xaa, 0x13, 0x42, 0x03, 0xfd, 0x27, 0x18, 0x8d, 0x84, 0x1f, 0x8b, 0x48, 0x45, 0x27,
|
||||||
0xf6, 0xbf, 0xca, 0xad, 0x43, 0x6b, 0xc0, 0x9d, 0xcc, 0xe0, 0xff, 0x84, 0xa0, 0x47, 0xe8, 0x77,
|
0xe6, 0xbf, 0xcc, 0xad, 0x43, 0x63, 0x40, 0x9d, 0xcc, 0xe0, 0xfd, 0xe4, 0x40, 0x0f, 0x93, 0xef,
|
||||||
0x63, 0x36, 0x23, 0xd6, 0x80, 0x3d, 0x68, 0xc7, 0x74, 0x35, 0x8b, 0x68, 0xe0, 0xa1, 0x23, 0x74,
|
0xc6, 0x34, 0xc0, 0xc6, 0x80, 0x5c, 0x68, 0xc7, 0x64, 0x15, 0x44, 0xc4, 0x77, 0x9d, 0x23, 0xe7,
|
||||||
0xdc, 0x23, 0xe9, 0x12, 0xdf, 0x83, 0x8e, 0x12, 0x97, 0x21, 0xd5, 0x0b, 0xc9, 0xbd, 0xa6, 0xf5,
|
0xb8, 0x87, 0xd3, 0x25, 0xba, 0x0f, 0x1d, 0xc9, 0x2f, 0x43, 0xa2, 0x16, 0x82, 0xb9, 0x4d, 0xe3,
|
||||||
0xe5, 0x06, 0x7c, 0x1f, 0xfa, 0x94, 0x31, 0x1e, 0xeb, 0x48, 0x4e, 0x03, 0x1e, 0x6a, 0xa1, 0x57,
|
0xcb, 0x0d, 0xe8, 0x01, 0xf4, 0x09, 0xa5, 0x2c, 0x56, 0x91, 0x98, 0xfa, 0x2c, 0x54, 0x5c, 0xad,
|
||||||
0x5e, 0xcb, 0x82, 0x6a, 0x76, 0xfc, 0x00, 0x0e, 0x52, 0xdb, 0x79, 0xb6, 0xe3, 0x96, 0x05, 0xd7,
|
0xdc, 0x96, 0x01, 0xd5, 0xec, 0xe8, 0x21, 0x1c, 0xa4, 0xb6, 0xf3, 0x2c, 0xe3, 0x96, 0x01, 0xd7,
|
||||||
0x1d, 0xfe, 0x27, 0x80, 0x8b, 0x0c, 0x5f, 0x0a, 0x7d, 0x35, 0xdd, 0xc4, 0x73, 0x0f, 0x9a, 0x22,
|
0x1d, 0xde, 0x27, 0x80, 0x8a, 0x0c, 0x5f, 0x71, 0x35, 0x9b, 0x6e, 0xe2, 0xb9, 0x07, 0x4d, 0xee,
|
||||||
0xb0, 0x04, 0x3b, 0xa4, 0x29, 0x02, 0xff, 0x7b, 0x04, 0x9d, 0x3c, 0xbf, 0x3b, 0xb0, 0x13, 0x4b,
|
0x1b, 0x82, 0x1d, 0xdc, 0xe4, 0xbe, 0xf7, 0xbd, 0x03, 0x9d, 0xbc, 0xbe, 0xbb, 0xb0, 0x13, 0x0b,
|
||||||
0xbe, 0x9c, 0xba, 0xb0, 0x0e, 0x49, 0x56, 0xf8, 0x10, 0x76, 0x45, 0xca, 0xdb, 0x25, 0x97, 0xad,
|
0xb6, 0x9c, 0xda, 0xb0, 0x0e, 0x4e, 0x56, 0xe8, 0x10, 0x76, 0x79, 0xca, 0xdb, 0x16, 0x97, 0xad,
|
||||||
0x31, 0x86, 0xad, 0x80, 0x6a, 0x9a, 0xe4, 0x63, 0x9f, 0x8d, 0x1a, 0x92, 0xd3, 0xe0, 0x39, 0x5f,
|
0x11, 0x82, 0x2d, 0x9f, 0x28, 0x92, 0xd4, 0x63, 0x9e, 0xb5, 0x1a, 0x82, 0x11, 0xff, 0x05, 0x5b,
|
||||||
0x4d, 0x03, 0xcb, 0xbd, 0x43, 0x72, 0x83, 0xf1, 0x6a, 0x31, 0xe7, 0x4a, 0xd3, 0x79, 0xec, 0x6d,
|
0x4d, 0x7d, 0xc3, 0xbd, 0x83, 0x73, 0x83, 0xf6, 0x2a, 0x3e, 0x67, 0x52, 0x91, 0x79, 0xec, 0x6e,
|
||||||
0x1f, 0xa1, 0xe3, 0x16, 0xc9, 0x0d, 0xfe, 0x9f, 0x08, 0xda, 0x86, 0x51, 0x14, 0xe9, 0xd2, 0xb9,
|
0x1f, 0x39, 0xc7, 0x2d, 0x9c, 0x1b, 0xbc, 0x3f, 0x1d, 0x68, 0x6b, 0x46, 0x51, 0xa4, 0x4a, 0xfb,
|
||||||
0xa8, 0x72, 0xae, 0x07, 0x6d, 0x7b, 0xc3, 0xd3, 0x34, 0x9d, 0x74, 0x69, 0xd4, 0xe6, 0x21, 0x93,
|
0x3a, 0x95, 0x7d, 0x5d, 0x68, 0x9b, 0x13, 0x9e, 0xa6, 0xe5, 0xa4, 0x4b, 0xad, 0x36, 0x0b, 0xa9,
|
||||||
0xab, 0x58, 0xf3, 0x80, 0xb8, 0x53, 0x53, 0xb5, 0xab, 0x76, 0x83, 0x0d, 0xb8, 0x14, 0x4b, 0xaa,
|
0x58, 0xc5, 0x8a, 0xf9, 0xd8, 0xee, 0x9a, 0xaa, 0x5d, 0xb5, 0x6b, 0xac, 0xcf, 0x04, 0x5f, 0x12,
|
||||||
0x45, 0x14, 0x9e, 0xb3, 0x2b, 0x3e, 0xe7, 0x09, 0xe1, 0x9a, 0x1d, 0x0f, 0x01, 0xb3, 0x85, 0x94,
|
0xc5, 0xa3, 0xf0, 0x9c, 0xce, 0xd8, 0x9c, 0x25, 0x84, 0x6b, 0x76, 0x34, 0x04, 0x44, 0x17, 0x42,
|
||||||
0x3c, 0xd4, 0x49, 0xf4, 0x84, 0xaa, 0x2b, 0x9b, 0xc0, 0x16, 0x59, 0xe3, 0x29, 0xe7, 0xb9, 0x53,
|
0xb0, 0x50, 0x25, 0xd1, 0x13, 0x22, 0x67, 0xa6, 0x80, 0x2d, 0xbc, 0xc6, 0x53, 0xae, 0x73, 0xa7,
|
||||||
0xcd, 0xf3, 0xb7, 0x26, 0xec, 0x8f, 0xd9, 0xec, 0x49, 0x14, 0x6a, 0x1e, 0xea, 0xaf, 0xe8, 0x6c,
|
0x5a, 0xe7, 0x6f, 0x4d, 0xd8, 0x1f, 0xd3, 0xe0, 0x69, 0x14, 0x2a, 0x16, 0xaa, 0xaf, 0x48, 0xb0,
|
||||||
0xc1, 0xf1, 0x07, 0xd0, 0x5e, 0x28, 0x2e, 0xc7, 0x81, 0xbb, 0x80, 0xee, 0xe8, 0xdd, 0x61, 0x5e,
|
0x60, 0xe8, 0x03, 0x68, 0x2f, 0x24, 0x13, 0x63, 0xdf, 0x1e, 0x40, 0x77, 0xf4, 0xce, 0x30, 0x6f,
|
||||||
0x9e, 0x63, 0x36, 0xfb, 0xd2, 0x39, 0x27, 0x0d, 0x92, 0xe2, 0xf0, 0x19, 0x80, 0x79, 0x24, 0x7c,
|
0xcf, 0x31, 0x0d, 0xbe, 0xb4, 0xce, 0x49, 0x03, 0xa7, 0x38, 0x74, 0x06, 0xa0, 0x1f, 0x31, 0x9b,
|
||||||
0x1e, 0x2d, 0x5d, 0xe5, 0x75, 0x47, 0x5e, 0x3d, 0xca, 0xf9, 0x27, 0x0d, 0x52, 0x40, 0xe3, 0xaf,
|
0x47, 0x4b, 0xdb, 0x79, 0xdd, 0x91, 0x5b, 0x8f, 0xb2, 0xfe, 0x49, 0x03, 0x17, 0xd0, 0xe8, 0x6b,
|
||||||
0xe1, 0x1d, 0xb3, 0x7a, 0xc1, 0xe5, 0x5c, 0x28, 0x25, 0xa2, 0xf0, 0xc9, 0x15, 0x0d, 0x2f, 0xb9,
|
0x78, 0x5b, 0xaf, 0x5e, 0x32, 0x31, 0xe7, 0x52, 0xf2, 0x28, 0x7c, 0x3a, 0x23, 0xe1, 0x25, 0x33,
|
||||||
0x15, 0xab, 0x3b, 0xf2, 0xeb, 0xbb, 0x54, 0x91, 0x93, 0x06, 0x59, 0xbb, 0x43, 0xca, 0x6a, 0x1a,
|
0x62, 0x75, 0x47, 0x5e, 0x3d, 0x4b, 0x15, 0x39, 0x69, 0xe0, 0xb5, 0x19, 0x52, 0x56, 0xd3, 0x70,
|
||||||
0x2e, 0x85, 0x76, 0x82, 0xae, 0x65, 0xe5, 0xfc, 0x29, 0x2b, 0xb7, 0xc2, 0x1f, 0xc1, 0xae, 0x59,
|
0xc9, 0x95, 0x15, 0x74, 0x2d, 0x2b, 0xeb, 0x4f, 0x59, 0xd9, 0x15, 0xfa, 0x08, 0x76, 0xf5, 0xea,
|
||||||
0x3d, 0x8b, 0x44, 0x68, 0xc5, 0xed, 0x8e, 0xee, 0xd4, 0x23, 0x8d, 0x77, 0xd2, 0x20, 0x19, 0xf2,
|
0x79, 0xc4, 0x43, 0x23, 0x6e, 0x77, 0x74, 0xb7, 0x1e, 0xa9, 0xbd, 0x93, 0x06, 0xce, 0x90, 0x4f,
|
||||||
0x71, 0x1b, 0xb6, 0x97, 0x46, 0x43, 0xff, 0xa9, 0x2d, 0x9f, 0x4f, 0x4d, 0x19, 0x9e, 0x01, 0xd0,
|
0xda, 0xb0, 0xbd, 0xd4, 0x1a, 0x7a, 0xcf, 0x4c, 0xfb, 0x7c, 0xaa, 0xdb, 0xf0, 0x0c, 0x80, 0x64,
|
||||||
0x4c, 0x61, 0x0f, 0x1d, 0xb5, 0x8e, 0xbb, 0xa3, 0xc3, 0xf2, 0x5e, 0x45, 0xf9, 0x49, 0x01, 0xed,
|
0x0a, 0xbb, 0xce, 0x51, 0xeb, 0xb8, 0x3b, 0x3a, 0x2c, 0xe7, 0x2a, 0xca, 0x8f, 0x0b, 0x68, 0xef,
|
||||||
0xff, 0x85, 0x60, 0x77, 0xcc, 0x66, 0xe7, 0x9a, 0x6a, 0x8e, 0x07, 0x00, 0x59, 0xf9, 0x2a, 0xbb,
|
0x2f, 0x07, 0x76, 0xc7, 0x34, 0x38, 0x57, 0x44, 0x31, 0x34, 0x00, 0xc8, 0xda, 0x57, 0x9a, 0x44,
|
||||||
0x51, 0x87, 0x14, 0x2c, 0xf8, 0xd4, 0xa5, 0x6b, 0xc1, 0xca, 0x6b, 0xda, 0x83, 0xee, 0xd6, 0x49,
|
0x1d, 0x5c, 0xb0, 0xa0, 0x53, 0x5b, 0xae, 0x01, 0x4b, 0xb7, 0x69, 0x36, 0xba, 0x57, 0x27, 0x6d,
|
||||||
0x5b, 0x3f, 0x29, 0x40, 0xf1, 0x19, 0xb4, 0x85, 0xcd, 0x5a, 0x79, 0x2d, 0x1b, 0x75, 0x54, 0x8e,
|
0xfc, 0xb8, 0x00, 0x45, 0x67, 0xd0, 0xe6, 0xa6, 0x6a, 0xe9, 0xb6, 0x4c, 0xd4, 0x51, 0x39, 0xca,
|
||||||
0xb2, 0xb0, 0xa1, 0x13, 0x46, 0x3d, 0x0d, 0xb5, 0x5c, 0x91, 0x34, 0xe0, 0xf0, 0x0b, 0xe8, 0x15,
|
0xc0, 0x86, 0x56, 0x18, 0xf9, 0x2c, 0x54, 0x62, 0x85, 0xd3, 0x80, 0xc3, 0x2f, 0xa0, 0x57, 0x74,
|
||||||
0x1d, 0xb8, 0x0f, 0xad, 0xd7, 0x7c, 0x95, 0x74, 0xae, 0x79, 0xc4, 0xc3, 0x44, 0x93, 0xdb, 0xcb,
|
0xa0, 0x3e, 0xb4, 0xde, 0xb0, 0x55, 0x72, 0x73, 0xf5, 0x23, 0x1a, 0x26, 0x9a, 0xdc, 0xde, 0x16,
|
||||||
0xc2, 0x6d, 0x40, 0x1c, 0xec, 0xac, 0xf9, 0x10, 0xf9, 0xaf, 0xa1, 0x57, 0x64, 0xbb, 0xb1, 0x05,
|
0x36, 0x01, 0xb6, 0xb0, 0xb3, 0xe6, 0x23, 0xc7, 0x7b, 0x03, 0xbd, 0x22, 0xdb, 0x8d, 0x57, 0xf0,
|
||||||
0x1f, 0x41, 0x37, 0xce, 0x6e, 0x5e, 0xd9, 0x53, 0xf6, 0x46, 0xef, 0x6d, 0x2a, 0x1b, 0x45, 0x8a,
|
0x31, 0x74, 0xe3, 0xec, 0xe4, 0xa5, 0xd9, 0x65, 0x6f, 0xf4, 0xee, 0xa6, 0xb6, 0x91, 0xb8, 0x18,
|
||||||
0x11, 0xfe, 0x8f, 0x08, 0x20, 0x2f, 0xeb, 0x8d, 0x67, 0x3d, 0x80, 0x83, 0x6a, 0xf3, 0x3a, 0xa5,
|
0xe1, 0xfd, 0xe8, 0x00, 0xe4, 0x6d, 0xbd, 0x71, 0xaf, 0x87, 0x70, 0x50, 0xbd, 0xbc, 0x56, 0xe9,
|
||||||
0x7b, 0xa4, 0xee, 0xa8, 0x32, 0x6b, 0xfd, 0x6b, 0x66, 0xbf, 0x20, 0x78, 0xab, 0xa4, 0x11, 0x3e,
|
0x1e, 0xae, 0x3b, 0xaa, 0xcc, 0x5a, 0xff, 0x9a, 0xd9, 0xcf, 0x0e, 0xdc, 0x29, 0x69, 0x84, 0x8e,
|
||||||
0x86, 0x7d, 0x37, 0x7e, 0x5f, 0x2c, 0x2e, 0x66, 0x82, 0x3d, 0xe7, 0x29, 0xc7, 0xaa, 0xf9, 0xff,
|
0x61, 0xdf, 0x8e, 0xdf, 0x97, 0x8b, 0x8b, 0x80, 0xd3, 0x17, 0x2c, 0xe5, 0x58, 0x35, 0xff, 0xdf,
|
||||||
0xa6, 0xfa, 0x33, 0x82, 0x6e, 0xa1, 0x2b, 0x36, 0xaa, 0x98, 0x25, 0x71, 0x5e, 0x79, 0x59, 0x55,
|
0x54, 0x7f, 0x75, 0xa0, 0x5b, 0xb8, 0x15, 0x1b, 0x55, 0x7c, 0x0f, 0xee, 0x24, 0x0c, 0x78, 0x14,
|
||||||
0xcd, 0xd8, 0x87, 0x5e, 0x96, 0x57, 0x3e, 0x40, 0x4b, 0xb6, 0xf5, 0x89, 0x6e, 0xdd, 0x92, 0xa8,
|
0xea, 0x12, 0xec, 0x34, 0x2f, 0x1b, 0xf3, 0x52, 0xf3, 0x17, 0x50, 0xab, 0x58, 0x6a, 0x66, 0x46,
|
||||||
0xaf, 0x32, 0x45, 0x93, 0xf1, 0xb3, 0x89, 0xe8, 0x67, 0xb0, 0x9f, 0xf4, 0x17, 0xe1, 0xf1, 0x8c,
|
0x1e, 0xf4, 0xb2, 0xea, 0x75, 0x3a, 0xfb, 0x9e, 0x2a, 0xd9, 0xd6, 0xcb, 0xb1, 0x7d, 0x8b, 0x1c,
|
||||||
0xb2, 0xac, 0xad, 0xee, 0x95, 0x95, 0x21, 0x25, 0x10, 0xa9, 0x06, 0xf9, 0xdf, 0xc0, 0x41, 0x0d,
|
0x9e, 0xcc, 0x74, 0x4f, 0x86, 0xd4, 0xa6, 0x72, 0x3e, 0x83, 0xfd, 0xe4, 0x16, 0x62, 0x16, 0x07,
|
||||||
0xb5, 0xf1, 0xe0, 0x75, 0x2f, 0x8f, 0xe6, 0xfa, 0x97, 0x87, 0xbf, 0x84, 0xbb, 0xb7, 0x0c, 0xc6,
|
0x84, 0x66, 0x97, 0xef, 0x7e, 0x59, 0x3f, 0x5c, 0x02, 0xe1, 0x6a, 0x90, 0xf7, 0x0d, 0x1c, 0xd4,
|
||||||
0xff, 0xb6, 0x6d, 0x9e, 0xc1, 0x9e, 0x99, 0x0d, 0xab, 0x90, 0x7d, 0xce, 0x95, 0xa2, 0x97, 0x1c,
|
0x50, 0x1b, 0x37, 0x5e, 0xf7, 0x8a, 0x69, 0xae, 0x7f, 0xc5, 0x78, 0x4b, 0xb8, 0x77, 0xcb, 0xf8,
|
||||||
0x3f, 0x84, 0x36, 0xcb, 0xc6, 0x9c, 0xe9, 0xf5, 0x41, 0x65, 0x8e, 0xac, 0x42, 0x56, 0x1a, 0x75,
|
0xfc, 0x6f, 0x2f, 0xd7, 0x73, 0xd8, 0xd3, 0x13, 0x64, 0x15, 0xd2, 0xcf, 0x99, 0x94, 0xe4, 0x92,
|
||||||
0x29, 0xdc, 0x7f, 0x05, 0x6f, 0xaf, 0xf1, 0xdb, 0xd1, 0x19, 0x04, 0xee, 0xb3, 0x40, 0x25, 0x7b,
|
0xa1, 0x47, 0xd0, 0xa6, 0xd9, 0x30, 0xd4, 0x13, 0x61, 0x50, 0x99, 0x36, 0xab, 0x90, 0x96, 0x06,
|
||||||
0x56, 0xe6, 0xc7, 0x38, 0xf3, 0x9b, 0x01, 0x9e, 0xa3, 0xf3, 0x51, 0x3c, 0xb1, 0x37, 0x9e, 0xe3,
|
0x62, 0x0a, 0xf7, 0x5e, 0xc3, 0x5b, 0x6b, 0xfc, 0x66, 0xc0, 0xfa, 0xbe, 0xfd, 0x78, 0x90, 0x49,
|
||||||
0xf0, 0x29, 0xb4, 0x65, 0xb6, 0xa5, 0xb9, 0xcd, 0x62, 0xd6, 0xf5, 0xef, 0x18, 0x92, 0xa2, 0xef,
|
0xce, 0xca, 0x94, 0x19, 0x67, 0x7e, 0x3d, 0xe6, 0x73, 0x74, 0x3e, 0xb0, 0x27, 0xe6, 0xc4, 0x73,
|
||||||
0x9f, 0x02, 0xae, 0x8b, 0x82, 0x3b, 0xb0, 0x3d, 0x0e, 0xe6, 0x22, 0xec, 0x37, 0x30, 0xc0, 0xce,
|
0x1c, 0x3a, 0x85, 0xb6, 0xc8, 0x52, 0xea, 0xd3, 0x2c, 0x56, 0x5d, 0xff, 0xda, 0xc1, 0x29, 0xfa,
|
||||||
0x4b, 0x29, 0x34, 0x97, 0x7d, 0x64, 0x9e, 0xcd, 0x0d, 0x71, 0xd9, 0x6f, 0x3e, 0x7e, 0xf4, 0xeb,
|
0xc1, 0x29, 0xa0, 0xba, 0x28, 0xa8, 0x03, 0xdb, 0x63, 0x7f, 0xce, 0xc3, 0x7e, 0x03, 0x01, 0xec,
|
||||||
0xf5, 0x00, 0xbd, 0xb9, 0x1e, 0xa0, 0x3f, 0xae, 0x07, 0xe8, 0x87, 0x9b, 0x41, 0xe3, 0xcd, 0xcd,
|
0xbc, 0x12, 0x5c, 0x31, 0xd1, 0x77, 0xf4, 0xb3, 0x3e, 0x21, 0x26, 0xfa, 0xcd, 0x27, 0x8f, 0x7f,
|
||||||
0xa0, 0xf1, 0xfb, 0xcd, 0xa0, 0xf1, 0xea, 0xfd, 0x7f, 0xf4, 0x95, 0x78, 0xb1, 0x63, 0x7f, 0x3e,
|
0xb9, 0x1e, 0x38, 0x57, 0xd7, 0x03, 0xe7, 0x8f, 0xeb, 0x81, 0xf3, 0xc3, 0xcd, 0xa0, 0x71, 0x75,
|
||||||
0xfc, 0x3b, 0x00, 0x00, 0xff, 0xff, 0xca, 0x28, 0x1e, 0x14, 0x55, 0x0a, 0x00, 0x00,
|
0x33, 0x68, 0xfc, 0x7e, 0x33, 0x68, 0xbc, 0x7e, 0xff, 0x1f, 0x7d, 0x4b, 0x5e, 0xec, 0x98, 0x9f,
|
||||||
|
0x0f, 0xff, 0x0e, 0x00, 0x00, 0xff, 0xff, 0xca, 0x88, 0xea, 0x1c, 0x7b, 0x0a, 0x00, 0x00,
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *RawAclRecord) Marshal() (dAtA []byte, err error) {
|
func (m *RawAclRecord) Marshal() (dAtA []byte, err error) {
|
||||||
@ -1805,7 +1814,7 @@ func (m *AclUserJoin) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
|||||||
copy(dAtA[i:], m.EncryptedReadKeys[iNdEx])
|
copy(dAtA[i:], m.EncryptedReadKeys[iNdEx])
|
||||||
i = encodeVarintAclrecord(dAtA, i, uint64(len(m.EncryptedReadKeys[iNdEx])))
|
i = encodeVarintAclrecord(dAtA, i, uint64(len(m.EncryptedReadKeys[iNdEx])))
|
||||||
i--
|
i--
|
||||||
dAtA[i] = 0x22
|
dAtA[i] = 0x2a
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if len(m.AcceptPubKey) > 0 {
|
if len(m.AcceptPubKey) > 0 {
|
||||||
@ -1813,13 +1822,20 @@ func (m *AclUserJoin) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
|||||||
copy(dAtA[i:], m.AcceptPubKey)
|
copy(dAtA[i:], m.AcceptPubKey)
|
||||||
i = encodeVarintAclrecord(dAtA, i, uint64(len(m.AcceptPubKey)))
|
i = encodeVarintAclrecord(dAtA, i, uint64(len(m.AcceptPubKey)))
|
||||||
i--
|
i--
|
||||||
dAtA[i] = 0x1a
|
dAtA[i] = 0x22
|
||||||
}
|
}
|
||||||
if len(m.AcceptSignature) > 0 {
|
if len(m.AcceptSignature) > 0 {
|
||||||
i -= len(m.AcceptSignature)
|
i -= len(m.AcceptSignature)
|
||||||
copy(dAtA[i:], m.AcceptSignature)
|
copy(dAtA[i:], m.AcceptSignature)
|
||||||
i = encodeVarintAclrecord(dAtA, i, uint64(len(m.AcceptSignature)))
|
i = encodeVarintAclrecord(dAtA, i, uint64(len(m.AcceptSignature)))
|
||||||
i--
|
i--
|
||||||
|
dAtA[i] = 0x1a
|
||||||
|
}
|
||||||
|
if len(m.EncryptionKey) > 0 {
|
||||||
|
i -= len(m.EncryptionKey)
|
||||||
|
copy(dAtA[i:], m.EncryptionKey)
|
||||||
|
i = encodeVarintAclrecord(dAtA, i, uint64(len(m.EncryptionKey)))
|
||||||
|
i--
|
||||||
dAtA[i] = 0x12
|
dAtA[i] = 0x12
|
||||||
}
|
}
|
||||||
if len(m.Identity) > 0 {
|
if len(m.Identity) > 0 {
|
||||||
@ -2376,6 +2392,10 @@ func (m *AclUserJoin) Size() (n int) {
|
|||||||
if l > 0 {
|
if l > 0 {
|
||||||
n += 1 + l + sovAclrecord(uint64(l))
|
n += 1 + l + sovAclrecord(uint64(l))
|
||||||
}
|
}
|
||||||
|
l = len(m.EncryptionKey)
|
||||||
|
if l > 0 {
|
||||||
|
n += 1 + l + sovAclrecord(uint64(l))
|
||||||
|
}
|
||||||
l = len(m.AcceptSignature)
|
l = len(m.AcceptSignature)
|
||||||
if l > 0 {
|
if l > 0 {
|
||||||
n += 1 + l + sovAclrecord(uint64(l))
|
n += 1 + l + sovAclrecord(uint64(l))
|
||||||
@ -4217,6 +4237,40 @@ func (m *AclUserJoin) Unmarshal(dAtA []byte) error {
|
|||||||
}
|
}
|
||||||
iNdEx = postIndex
|
iNdEx = postIndex
|
||||||
case 2:
|
case 2:
|
||||||
|
if wireType != 2 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field EncryptionKey", wireType)
|
||||||
|
}
|
||||||
|
var byteLen int
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowAclrecord
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
byteLen |= int(b&0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if byteLen < 0 {
|
||||||
|
return ErrInvalidLengthAclrecord
|
||||||
|
}
|
||||||
|
postIndex := iNdEx + byteLen
|
||||||
|
if postIndex < 0 {
|
||||||
|
return ErrInvalidLengthAclrecord
|
||||||
|
}
|
||||||
|
if postIndex > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
m.EncryptionKey = append(m.EncryptionKey[:0], dAtA[iNdEx:postIndex]...)
|
||||||
|
if m.EncryptionKey == nil {
|
||||||
|
m.EncryptionKey = []byte{}
|
||||||
|
}
|
||||||
|
iNdEx = postIndex
|
||||||
|
case 3:
|
||||||
if wireType != 2 {
|
if wireType != 2 {
|
||||||
return fmt.Errorf("proto: wrong wireType = %d for field AcceptSignature", wireType)
|
return fmt.Errorf("proto: wrong wireType = %d for field AcceptSignature", wireType)
|
||||||
}
|
}
|
||||||
@ -4250,7 +4304,7 @@ func (m *AclUserJoin) Unmarshal(dAtA []byte) error {
|
|||||||
m.AcceptSignature = []byte{}
|
m.AcceptSignature = []byte{}
|
||||||
}
|
}
|
||||||
iNdEx = postIndex
|
iNdEx = postIndex
|
||||||
case 3:
|
case 4:
|
||||||
if wireType != 2 {
|
if wireType != 2 {
|
||||||
return fmt.Errorf("proto: wrong wireType = %d for field AcceptPubKey", wireType)
|
return fmt.Errorf("proto: wrong wireType = %d for field AcceptPubKey", wireType)
|
||||||
}
|
}
|
||||||
@ -4284,7 +4338,7 @@ func (m *AclUserJoin) Unmarshal(dAtA []byte) error {
|
|||||||
m.AcceptPubKey = []byte{}
|
m.AcceptPubKey = []byte{}
|
||||||
}
|
}
|
||||||
iNdEx = postIndex
|
iNdEx = postIndex
|
||||||
case 4:
|
case 5:
|
||||||
if wireType != 2 {
|
if wireType != 2 {
|
||||||
return fmt.Errorf("proto: wrong wireType = %d for field EncryptedReadKeys", wireType)
|
return fmt.Errorf("proto: wrong wireType = %d for field EncryptedReadKeys", wireType)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,18 +18,17 @@ message AclRecord {
|
|||||||
string prevId = 1;
|
string prevId = 1;
|
||||||
bytes identity = 2;
|
bytes identity = 2;
|
||||||
bytes data = 3;
|
bytes data = 3;
|
||||||
uint64 currentReadKeyHash = 4;
|
string readKeyId = 4;
|
||||||
int64 timestamp = 5;
|
int64 timestamp = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
message AclRoot {
|
message AclRoot {
|
||||||
bytes identity = 1;
|
bytes identity = 1;
|
||||||
bytes encryptionKey = 2;
|
string spaceId = 2;
|
||||||
string spaceId = 3;
|
bytes encryptedReadKey = 3;
|
||||||
bytes encryptedReadKey = 4;
|
string derivationScheme = 4;
|
||||||
string derivationScheme = 5;
|
uint64 currentReadKeyHash = 5;
|
||||||
uint64 currentReadKeyHash = 6;
|
int64 timestamp = 6;
|
||||||
int64 timestamp = 7;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
message AclContentValue {
|
message AclContentValue {
|
||||||
@ -47,29 +46,26 @@ message AclData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
message AclState {
|
message AclState {
|
||||||
repeated uint64 readKeyHashes = 1;
|
repeated string readKeyIds = 1;
|
||||||
repeated AclUserState userStates = 2;
|
repeated AclUserState userStates = 2;
|
||||||
map<string, AclUserInvite> invites = 3;
|
map<string, AclUserInvite> invites = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
message AclUserState {
|
message AclUserState {
|
||||||
bytes identity = 1;
|
bytes identity = 1;
|
||||||
bytes encryptionKey = 2;
|
AclUserPermissions permissions = 2;
|
||||||
AclUserPermissions permissions = 3;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
message AclUserAdd {
|
message AclUserAdd {
|
||||||
bytes identity = 1;
|
bytes identity = 1;
|
||||||
bytes encryptionKey = 2;
|
repeated bytes encryptedReadKeys = 2;
|
||||||
repeated bytes encryptedReadKeys = 3;
|
AclUserPermissions permissions = 3;
|
||||||
AclUserPermissions permissions = 4;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
message AclUserInvite {
|
message AclUserInvite {
|
||||||
bytes acceptPublicKey = 1;
|
bytes acceptPublicKey = 1;
|
||||||
uint64 encryptSymKeyHash = 2;
|
repeated bytes encryptedReadKeys = 2;
|
||||||
repeated bytes encryptedReadKeys = 3;
|
AclUserPermissions permissions = 3;
|
||||||
AclUserPermissions permissions = 4;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
message AclUserJoin {
|
message AclUserJoin {
|
||||||
@ -86,8 +82,7 @@ message AclUserRemove {
|
|||||||
|
|
||||||
message AclReadKeyReplace {
|
message AclReadKeyReplace {
|
||||||
bytes identity = 1;
|
bytes identity = 1;
|
||||||
bytes encryptionKey = 2;
|
bytes encryptedReadKey = 2;
|
||||||
bytes encryptedReadKey = 3;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
message AclUserPermissionChange {
|
message AclUserPermissionChange {
|
||||||
@ -102,7 +97,7 @@ enum AclUserPermissions {
|
|||||||
}
|
}
|
||||||
|
|
||||||
message AclSyncMessage {
|
message AclSyncMessage {
|
||||||
AclSyncContentValue content = 2;
|
AclSyncContentValue content = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// AclSyncContentValue provides different types for acl sync
|
// AclSyncContentValue provides different types for acl sync
|
||||||
|
|||||||
@ -4,8 +4,10 @@ import (
|
|||||||
"bytes"
|
"bytes"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"hash/fnv"
|
||||||
|
|
||||||
"github.com/anytypeio/any-sync/app/logger"
|
"github.com/anytypeio/any-sync/app/logger"
|
||||||
aclrecordproto "github.com/anytypeio/any-sync/commonspace/object/acl/aclrecordproto"
|
"github.com/anytypeio/any-sync/commonspace/object/acl/aclrecordproto"
|
||||||
"github.com/anytypeio/any-sync/commonspace/object/keychain"
|
"github.com/anytypeio/any-sync/commonspace/object/keychain"
|
||||||
"github.com/anytypeio/any-sync/util/crypto"
|
"github.com/anytypeio/any-sync/util/crypto"
|
||||||
"github.com/anytypeio/any-sync/util/keys"
|
"github.com/anytypeio/any-sync/util/keys"
|
||||||
@ -13,10 +15,9 @@ import (
|
|||||||
"github.com/anytypeio/any-sync/util/keys/asymmetric/signingkey"
|
"github.com/anytypeio/any-sync/util/keys/asymmetric/signingkey"
|
||||||
"github.com/gogo/protobuf/proto"
|
"github.com/gogo/protobuf/proto"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"hash/fnv"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var log = logger.NewNamed("acllist").Sugar()
|
var log = logger.NewNamedSugared("common.commonspace.acllist")
|
||||||
|
|
||||||
var (
|
var (
|
||||||
ErrNoSuchUser = errors.New("no such user")
|
ErrNoSuchUser = errors.New("no such user")
|
||||||
|
|||||||
@ -4,15 +4,16 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/anytypeio/any-sync/app/logger"
|
"github.com/anytypeio/any-sync/app/logger"
|
||||||
"github.com/anytypeio/any-sync/commonspace/object/tree/treestorage"
|
"github.com/anytypeio/any-sync/commonspace/object/tree/treestorage"
|
||||||
"github.com/anytypeio/any-sync/util/slice"
|
"github.com/anytypeio/any-sync/util/slice"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"time"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
log = logger.NewNamed("acltree").Sugar()
|
log = logger.NewNamedSugared("common.commonspace.objecttree")
|
||||||
ErrEmpty = errors.New("logs empty")
|
ErrEmpty = errors.New("logs empty")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@ -30,8 +30,8 @@ message TreeChange {
|
|||||||
string snapshotBaseId = 3;
|
string snapshotBaseId = 3;
|
||||||
// ChangesData is an arbitrary payload to be read by the client
|
// ChangesData is an arbitrary payload to be read by the client
|
||||||
bytes changesData = 4;
|
bytes changesData = 4;
|
||||||
// CurrentReadKeyHash is the hash of the read key which is used to encrypt this change
|
// ReadKeyId is the id of the read key
|
||||||
uint64 currentReadKeyHash = 5;
|
string readKeyId = 5;
|
||||||
// Timestamp is this change creation timestamp
|
// Timestamp is this change creation timestamp
|
||||||
int64 timestamp = 6;
|
int64 timestamp = 6;
|
||||||
// Identity is a public key with which the raw payload of this change is signed
|
// Identity is a public key with which the raw payload of this change is signed
|
||||||
|
|||||||
@ -132,8 +132,8 @@ type TreeChange struct {
|
|||||||
SnapshotBaseId string `protobuf:"bytes,3,opt,name=snapshotBaseId,proto3" json:"snapshotBaseId,omitempty"`
|
SnapshotBaseId string `protobuf:"bytes,3,opt,name=snapshotBaseId,proto3" json:"snapshotBaseId,omitempty"`
|
||||||
// ChangesData is an arbitrary payload to be read by the client
|
// ChangesData is an arbitrary payload to be read by the client
|
||||||
ChangesData []byte `protobuf:"bytes,4,opt,name=changesData,proto3" json:"changesData,omitempty"`
|
ChangesData []byte `protobuf:"bytes,4,opt,name=changesData,proto3" json:"changesData,omitempty"`
|
||||||
// CurrentReadKeyHash is the hash of the read key which is used to encrypt this change
|
// ReadKeyId is the id of the read key
|
||||||
CurrentReadKeyHash uint64 `protobuf:"varint,5,opt,name=currentReadKeyHash,proto3" json:"currentReadKeyHash,omitempty"`
|
ReadKeyId string `protobuf:"bytes,5,opt,name=readKeyId,proto3" json:"readKeyId,omitempty"`
|
||||||
// Timestamp is this change creation timestamp
|
// Timestamp is this change creation timestamp
|
||||||
Timestamp int64 `protobuf:"varint,6,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
|
Timestamp int64 `protobuf:"varint,6,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
|
||||||
// Identity is a public key with which the raw payload of this change is signed
|
// Identity is a public key with which the raw payload of this change is signed
|
||||||
@ -203,11 +203,11 @@ func (m *TreeChange) GetChangesData() []byte {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *TreeChange) GetCurrentReadKeyHash() uint64 {
|
func (m *TreeChange) GetReadKeyId() string {
|
||||||
if m != nil {
|
if m != nil {
|
||||||
return m.CurrentReadKeyHash
|
return m.ReadKeyId
|
||||||
}
|
}
|
||||||
return 0
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *TreeChange) GetTimestamp() int64 {
|
func (m *TreeChange) GetTimestamp() int64 {
|
||||||
@ -806,51 +806,50 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var fileDescriptor_5033f0301ef9b772 = []byte{
|
var fileDescriptor_5033f0301ef9b772 = []byte{
|
||||||
// 690 bytes of a gzipped FileDescriptorProto
|
// 677 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x55, 0xc1, 0x4e, 0xdb, 0x4a,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x55, 0xcf, 0x4f, 0xd4, 0x40,
|
||||||
0x14, 0xf5, 0x38, 0x01, 0xc3, 0x25, 0xc0, 0x7b, 0x03, 0x0b, 0x0b, 0xbd, 0xe7, 0x5a, 0x56, 0xd5,
|
0x14, 0xee, 0x74, 0x81, 0xb2, 0x8f, 0x05, 0x74, 0xe0, 0xd0, 0x10, 0xad, 0x4d, 0x63, 0x74, 0xbd,
|
||||||
0xa6, 0x1b, 0x90, 0xe8, 0xaa, 0x55, 0x25, 0x54, 0x28, 0xd4, 0x11, 0x6a, 0x85, 0x06, 0x4a, 0xa5,
|
0x40, 0x82, 0x27, 0x8d, 0x09, 0x11, 0x04, 0x77, 0x43, 0x34, 0x64, 0x40, 0x4c, 0xbc, 0x0d, 0xed,
|
||||||
0xee, 0x06, 0xfb, 0x42, 0x5c, 0x25, 0xb6, 0xeb, 0x99, 0x14, 0xe5, 0x03, 0xba, 0x69, 0xa5, 0xaa,
|
0xc0, 0xd6, 0xec, 0x76, 0x6a, 0x67, 0x56, 0xb2, 0x7f, 0x80, 0x17, 0x4d, 0x88, 0xff, 0x92, 0x37,
|
||||||
0x9f, 0xd0, 0x5f, 0xe9, 0xae, 0x4b, 0x96, 0x2c, 0x2b, 0xf8, 0x91, 0xca, 0x63, 0x3b, 0xb1, 0x1d,
|
0x8f, 0x1c, 0x39, 0x1a, 0xf6, 0x1f, 0x31, 0x9d, 0x69, 0xb7, 0x3f, 0x76, 0x0f, 0xdc, 0xb8, 0x74,
|
||||||
0x2f, 0xd8, 0xb1, 0x71, 0x72, 0x8f, 0xef, 0x3d, 0x73, 0xee, 0xb9, 0x33, 0x63, 0xd8, 0xf1, 0xa2,
|
0xf7, 0x7d, 0x7d, 0xef, 0x7b, 0xdf, 0xfb, 0xe6, 0x47, 0x61, 0xc7, 0xe7, 0x83, 0x01, 0x8f, 0x44,
|
||||||
0xe1, 0x30, 0x0a, 0x45, 0xcc, 0x3d, 0xdc, 0x8a, 0xce, 0x3e, 0xa2, 0x27, 0xb7, 0x64, 0x82, 0xa8,
|
0x4c, 0x7d, 0xb6, 0xc5, 0xcf, 0xbe, 0x32, 0x5f, 0x6e, 0xc9, 0x84, 0x31, 0xf5, 0xf0, 0x7b, 0x34,
|
||||||
0x1e, 0x5e, 0x9f, 0x87, 0x17, 0x18, 0x27, 0x91, 0x8c, 0xb6, 0xd4, 0x53, 0x94, 0xe0, 0x4d, 0x85,
|
0xba, 0x60, 0x71, 0xc2, 0x25, 0xdf, 0x52, 0x4f, 0x51, 0x82, 0x37, 0x15, 0x82, 0xa1, 0x40, 0xbc,
|
||||||
0x50, 0x98, 0x22, 0xce, 0x35, 0x01, 0x60, 0x51, 0x24, 0xf7, 0x54, 0x48, 0xff, 0x83, 0x45, 0xee,
|
0x1b, 0x04, 0x40, 0x38, 0x97, 0x7b, 0x2a, 0xc4, 0x8f, 0xa0, 0x49, 0xfd, 0x7e, 0x87, 0xd1, 0xa0,
|
||||||
0x0d, 0x5c, 0xe4, 0x7e, 0xcf, 0x37, 0x89, 0x4d, 0xba, 0x8b, 0x6c, 0x0a, 0x50, 0x13, 0x0c, 0xb5,
|
0x1b, 0xd8, 0xc8, 0x45, 0xed, 0x26, 0x29, 0x00, 0x6c, 0x83, 0xa5, 0xba, 0x76, 0x03, 0xdb, 0x54,
|
||||||
0x6a, 0xcf, 0x37, 0x75, 0xf5, 0xae, 0x08, 0xa9, 0x05, 0x90, 0x11, 0x9e, 0x8c, 0x63, 0x34, 0x5b,
|
0xef, 0xf2, 0x10, 0x3b, 0x00, 0x9a, 0xf0, 0x64, 0x14, 0x33, 0xbb, 0xa1, 0x5e, 0x96, 0x90, 0x94,
|
||||||
0xea, 0x65, 0x09, 0x49, 0x79, 0x65, 0x30, 0x44, 0x21, 0xf9, 0x30, 0x36, 0xdb, 0x36, 0xe9, 0xb6,
|
0x57, 0x86, 0x03, 0x26, 0x24, 0x1d, 0xc4, 0xf6, 0x9c, 0x8b, 0xda, 0x0d, 0x52, 0x00, 0x18, 0xc3,
|
||||||
0xd8, 0x14, 0xa0, 0x14, 0xda, 0x02, 0xd1, 0x37, 0xe7, 0x6c, 0xd2, 0xed, 0x30, 0xf5, 0x9f, 0x6e,
|
0x9c, 0x60, 0x2c, 0xb0, 0xe7, 0x5d, 0xd4, 0x6e, 0x11, 0xf5, 0x1f, 0x6f, 0xc0, 0x62, 0x18, 0xb0,
|
||||||
0xc0, 0x42, 0xe0, 0x63, 0x28, 0x03, 0x39, 0x36, 0xe7, 0x15, 0x3e, 0x89, 0xe9, 0x43, 0x58, 0xce,
|
0x48, 0x86, 0x72, 0x64, 0x2f, 0x28, 0x7c, 0x12, 0xe3, 0xa7, 0xb0, 0xac, 0xb9, 0x8f, 0xe8, 0xa8,
|
||||||
0xb8, 0x8f, 0xf8, 0x78, 0x10, 0x71, 0xdf, 0x34, 0x54, 0x42, 0x15, 0x74, 0x7e, 0xea, 0x00, 0x27,
|
0xcf, 0x69, 0x60, 0x5b, 0x2a, 0xa1, 0x0a, 0x7a, 0x57, 0x26, 0xc0, 0x49, 0xc2, 0x58, 0x36, 0x9a,
|
||||||
0x09, 0x62, 0xde, 0x9a, 0x0d, 0x4b, 0x69, 0xdf, 0x59, 0x2b, 0xc2, 0x24, 0x76, 0xab, 0xbb, 0xc8,
|
0x0b, 0x4b, 0xe9, 0xdc, 0x7a, 0x14, 0x61, 0x23, 0xb7, 0xd1, 0x6e, 0x92, 0x32, 0x54, 0x1d, 0xde,
|
||||||
0xca, 0x50, 0xb5, 0x79, 0xbd, 0xde, 0xfc, 0x23, 0x58, 0x11, 0x21, 0x8f, 0x45, 0x3f, 0x92, 0xbb,
|
0xac, 0x0f, 0xff, 0x0c, 0x56, 0x44, 0x44, 0x63, 0xd1, 0xe3, 0x72, 0x97, 0x8a, 0xd4, 0x03, 0x3d,
|
||||||
0x5c, 0xa4, 0x1e, 0x64, 0x6d, 0xd6, 0xd0, 0x74, 0x9d, 0x4c, 0x87, 0x78, 0xc5, 0x25, 0x57, 0xcd,
|
0x66, 0x0d, 0x4d, 0xfb, 0x68, 0x1d, 0xe2, 0x1d, 0x95, 0x54, 0x0d, 0xdb, 0x22, 0x65, 0x28, 0xed,
|
||||||
0x76, 0x58, 0x19, 0xa2, 0x9b, 0x40, 0xbd, 0x51, 0x92, 0x60, 0x28, 0x19, 0x72, 0xff, 0x10, 0xc7,
|
0x93, 0x30, 0x1a, 0x1c, 0xb2, 0x51, 0x57, 0xcf, 0xdc, 0x24, 0x05, 0x50, 0xb5, 0x6a, 0xa1, 0x6e,
|
||||||
0x2e, 0x17, 0x7d, 0xd5, 0x7c, 0x9b, 0x35, 0xbc, 0xa9, 0x9a, 0x37, 0x5f, 0x37, 0xaf, 0x6c, 0x94,
|
0x55, 0xd9, 0x16, 0xab, 0x66, 0x8b, 0x03, 0x10, 0x8a, 0xe3, 0x4c, 0x8d, 0xbd, 0xe8, 0xa2, 0xf6,
|
||||||
0x51, 0x33, 0xca, 0x02, 0x08, 0xc4, 0x71, 0xae, 0xcf, 0x5c, 0xb0, 0x49, 0x77, 0x81, 0x95, 0x10,
|
0x22, 0x29, 0x21, 0xde, 0x7b, 0x58, 0x26, 0xf4, 0xb2, 0x64, 0x89, 0x0d, 0x56, 0x9c, 0x39, 0x88,
|
||||||
0xe7, 0x35, 0x2c, 0x33, 0x7e, 0x59, 0x32, 0xc9, 0x04, 0x23, 0xce, 0x3d, 0x25, 0x8a, 0xab, 0x08,
|
0x14, 0x57, 0x1e, 0xa6, 0x22, 0x44, 0x78, 0x11, 0x51, 0x39, 0x4c, 0x98, 0xb2, 0xa2, 0x45, 0x0a,
|
||||||
0x53, 0x11, 0x22, 0xb8, 0x08, 0xb9, 0x1c, 0x25, 0xa8, 0xcc, 0xe9, 0xb0, 0x29, 0xe0, 0xec, 0xc1,
|
0xc0, 0xdb, 0x83, 0xb5, 0x0a, 0xd1, 0xe7, 0x50, 0xf6, 0xb4, 0xf2, 0x84, 0x5e, 0x6a, 0x28, 0x23,
|
||||||
0x5a, 0x85, 0xe8, 0x7d, 0x20, 0xfb, 0x3d, 0x55, 0x94, 0xf0, 0xcb, 0x0c, 0xca, 0x09, 0xa7, 0x00,
|
0x2c, 0x00, 0xbc, 0x02, 0x66, 0x98, 0xdb, 0x6a, 0x86, 0x81, 0x77, 0x85, 0x60, 0x35, 0xa5, 0x38,
|
||||||
0x5d, 0x01, 0x3d, 0x28, 0x8c, 0xd6, 0x03, 0xdf, 0xf9, 0x4e, 0x60, 0x35, 0xa5, 0x38, 0x1e, 0x87,
|
0x1e, 0x45, 0xfe, 0x07, 0x26, 0x04, 0xbd, 0x60, 0xf8, 0x35, 0x58, 0x3e, 0x8f, 0x24, 0x8b, 0xa4,
|
||||||
0xde, 0x1b, 0x14, 0x82, 0x5f, 0x20, 0x7d, 0x0e, 0x86, 0x17, 0x85, 0x12, 0x43, 0xa9, 0xea, 0x97,
|
0xaa, 0x5f, 0xda, 0x76, 0x37, 0x4b, 0xbb, 0x37, 0xcf, 0xde, 0xd3, 0x29, 0xa7, 0xb4, 0x3f, 0x64,
|
||||||
0xb6, 0xed, 0xcd, 0xd2, 0x7e, 0x2e, 0xb2, 0xf7, 0xb2, 0x94, 0x53, 0x3e, 0x18, 0x21, 0x2b, 0x0a,
|
0x24, 0x2f, 0xc0, 0x3b, 0x00, 0xc9, 0x64, 0x23, 0xab, 0x3e, 0x4b, 0xdb, 0x4f, 0xca, 0xe5, 0x33,
|
||||||
0xe8, 0x0e, 0x40, 0x32, 0xd9, 0xda, 0x6a, 0x9d, 0xa5, 0xed, 0x07, 0xe5, 0xf2, 0x06, 0xc9, 0xac,
|
0x24, 0x93, 0x52, 0x89, 0xf7, 0xc7, 0x84, 0xf5, 0x59, 0x2d, 0xf0, 0x1b, 0x80, 0x1e, 0xa3, 0xc1,
|
||||||
0x54, 0xe2, 0xfc, 0xd2, 0x61, 0xbd, 0x69, 0x09, 0xfa, 0x02, 0xa0, 0x8f, 0xdc, 0x7f, 0x17, 0xfb,
|
0xa7, 0x38, 0xa0, 0x92, 0x65, 0xc2, 0x36, 0xea, 0xc2, 0x3a, 0x93, 0x8c, 0x8e, 0x41, 0x4a, 0xf9,
|
||||||
0x5c, 0x62, 0x2e, 0x6c, 0xa3, 0x2e, 0xcc, 0x9d, 0x64, 0xb8, 0x1a, 0x2b, 0xe5, 0xd3, 0x43, 0x58,
|
0xf8, 0x10, 0x56, 0xcf, 0x87, 0xfd, 0x7e, 0xca, 0x4a, 0xd8, 0xb7, 0x21, 0x13, 0x72, 0x96, 0xb8,
|
||||||
0x3d, 0x1f, 0x0d, 0x06, 0x29, 0x2b, 0xc3, 0x4f, 0x23, 0x14, 0xb2, 0x49, 0x5c, 0x4a, 0x71, 0x50,
|
0x94, 0xe2, 0xa0, 0x9a, 0xd6, 0x31, 0x48, 0xbd, 0x12, 0x7f, 0x84, 0x07, 0x05, 0x24, 0x62, 0x1e,
|
||||||
0x4d, 0x73, 0x35, 0x56, 0xaf, 0xa4, 0x6f, 0xe1, 0x9f, 0x29, 0x24, 0xe2, 0x28, 0x14, 0xd9, 0xf9,
|
0x09, 0x7d, 0xda, 0x66, 0x38, 0x75, 0x50, 0xcb, 0xeb, 0x18, 0x64, 0xaa, 0x16, 0xef, 0xc3, 0x32,
|
||||||
0x6b, 0x70, 0xea, 0xa0, 0x96, 0xe7, 0x6a, 0x6c, 0xa6, 0x96, 0xee, 0xc3, 0x32, 0x26, 0x49, 0x94,
|
0x4b, 0x12, 0x9e, 0x4c, 0xc8, 0xe6, 0x14, 0xd9, 0xe3, 0x3a, 0xd9, 0x7e, 0x39, 0xa9, 0x63, 0x90,
|
||||||
0x4c, 0xc8, 0xda, 0x8a, 0xec, 0xff, 0x3a, 0xd9, 0x7e, 0x39, 0xc9, 0xd5, 0x58, 0xb5, 0x6a, 0xd7,
|
0x6a, 0xd5, 0xae, 0x05, 0xf3, 0xdf, 0x53, 0xab, 0xbc, 0x1f, 0x08, 0x56, 0xaa, 0x6e, 0xe0, 0x75,
|
||||||
0x80, 0xb9, 0xcf, 0xa9, 0x55, 0xce, 0x17, 0x02, 0x2b, 0x55, 0x37, 0xe8, 0x3a, 0xcc, 0xa5, 0x6e,
|
0x98, 0x4f, 0xdd, 0xc8, 0x4f, 0x9c, 0x0e, 0xf0, 0x2b, 0xb0, 0xb2, 0x23, 0x61, 0x9b, 0x6e, 0xe3,
|
||||||
0x14, 0x67, 0x30, 0x0b, 0xe8, 0x33, 0x30, 0xf2, 0x43, 0x62, 0xea, 0x76, 0xeb, 0x2e, 0xa3, 0x2a,
|
0x2e, 0x4b, 0x95, 0xe7, 0x63, 0x0f, 0x5a, 0xf9, 0x91, 0x3b, 0xa2, 0xb2, 0x67, 0x37, 0x14, 0x6f,
|
||||||
0xf2, 0xa9, 0x03, 0x9d, 0xe2, 0x10, 0x1e, 0x71, 0xd9, 0x37, 0x5b, 0x8a, 0xb7, 0x82, 0x39, 0x5f,
|
0x05, 0xf3, 0x7e, 0x22, 0x58, 0x9b, 0x61, 0xe9, 0xfd, 0x88, 0xf9, 0x85, 0xf4, 0xc6, 0xaa, 0xaf,
|
||||||
0x09, 0xac, 0x35, 0x58, 0x7a, 0x3f, 0x62, 0xbe, 0x91, 0x6c, 0x63, 0xd5, 0x27, 0x72, 0x3f, 0x6a,
|
0xc8, 0xfd, 0xa8, 0x79, 0x01, 0x0f, 0xa7, 0x56, 0x34, 0x55, 0xa2, 0x56, 0x34, 0xbb, 0xf3, 0x75,
|
||||||
0x9e, 0xc0, 0xbf, 0x33, 0x13, 0x4d, 0x95, 0xa8, 0x89, 0xe6, 0x5f, 0x81, 0x2c, 0x70, 0x4e, 0xb3,
|
0xe0, 0x9d, 0xea, 0xc5, 0xd4, 0xbd, 0xba, 0xd1, 0x39, 0xaf, 0xdd, 0xf3, 0x68, 0xea, 0x9e, 0x9f,
|
||||||
0x61, 0x66, 0x6b, 0xf5, 0xc2, 0xf3, 0xa8, 0x76, 0xf3, 0x93, 0x99, 0x9b, 0x7f, 0xe6, 0xae, 0xd6,
|
0xba, 0x99, 0xcd, 0x19, 0x37, 0xf3, 0xee, 0xdb, 0xbf, 0xb7, 0x0e, 0xba, 0xbe, 0x75, 0xd0, 0xbf,
|
||||||
0x1b, 0xee, 0xea, 0xdd, 0x97, 0xbf, 0x6f, 0x2c, 0x72, 0x75, 0x63, 0x91, 0x3f, 0x37, 0x16, 0xf9,
|
0x5b, 0x07, 0xfd, 0x1e, 0x3b, 0xc6, 0xf5, 0xd8, 0x31, 0x6e, 0xc6, 0x8e, 0xf1, 0xe5, 0xf9, 0x1d,
|
||||||
0x71, 0x6b, 0x69, 0x57, 0xb7, 0x96, 0x76, 0x7d, 0x6b, 0x69, 0x1f, 0x1e, 0xdf, 0xf1, 0x6b, 0x77,
|
0xbf, 0x6d, 0x67, 0x0b, 0xea, 0xe7, 0xe5, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xbc, 0xc0, 0xf7,
|
||||||
0x36, 0xaf, 0x7e, 0x9e, 0xfe, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x24, 0x93, 0x3b, 0x00, 0x1f, 0x07,
|
0x30, 0x0d, 0x07, 0x00, 0x00,
|
||||||
0x00, 0x00,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *RootChange) Marshal() (dAtA []byte, err error) {
|
func (m *RootChange) Marshal() (dAtA []byte, err error) {
|
||||||
@ -965,10 +964,12 @@ func (m *TreeChange) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
|||||||
i--
|
i--
|
||||||
dAtA[i] = 0x30
|
dAtA[i] = 0x30
|
||||||
}
|
}
|
||||||
if m.CurrentReadKeyHash != 0 {
|
if len(m.ReadKeyId) > 0 {
|
||||||
i = encodeVarintTreechange(dAtA, i, uint64(m.CurrentReadKeyHash))
|
i -= len(m.ReadKeyId)
|
||||||
|
copy(dAtA[i:], m.ReadKeyId)
|
||||||
|
i = encodeVarintTreechange(dAtA, i, uint64(len(m.ReadKeyId)))
|
||||||
i--
|
i--
|
||||||
dAtA[i] = 0x28
|
dAtA[i] = 0x2a
|
||||||
}
|
}
|
||||||
if len(m.ChangesData) > 0 {
|
if len(m.ChangesData) > 0 {
|
||||||
i -= len(m.ChangesData)
|
i -= len(m.ChangesData)
|
||||||
@ -1543,8 +1544,9 @@ func (m *TreeChange) Size() (n int) {
|
|||||||
if l > 0 {
|
if l > 0 {
|
||||||
n += 1 + l + sovTreechange(uint64(l))
|
n += 1 + l + sovTreechange(uint64(l))
|
||||||
}
|
}
|
||||||
if m.CurrentReadKeyHash != 0 {
|
l = len(m.ReadKeyId)
|
||||||
n += 1 + sovTreechange(uint64(m.CurrentReadKeyHash))
|
if l > 0 {
|
||||||
|
n += 1 + l + sovTreechange(uint64(l))
|
||||||
}
|
}
|
||||||
if m.Timestamp != 0 {
|
if m.Timestamp != 0 {
|
||||||
n += 1 + sovTreechange(uint64(m.Timestamp))
|
n += 1 + sovTreechange(uint64(m.Timestamp))
|
||||||
@ -2214,10 +2216,10 @@ func (m *TreeChange) Unmarshal(dAtA []byte) error {
|
|||||||
}
|
}
|
||||||
iNdEx = postIndex
|
iNdEx = postIndex
|
||||||
case 5:
|
case 5:
|
||||||
if wireType != 0 {
|
if wireType != 2 {
|
||||||
return fmt.Errorf("proto: wrong wireType = %d for field CurrentReadKeyHash", wireType)
|
return fmt.Errorf("proto: wrong wireType = %d for field ReadKeyId", wireType)
|
||||||
}
|
}
|
||||||
m.CurrentReadKeyHash = 0
|
var stringLen uint64
|
||||||
for shift := uint(0); ; shift += 7 {
|
for shift := uint(0); ; shift += 7 {
|
||||||
if shift >= 64 {
|
if shift >= 64 {
|
||||||
return ErrIntOverflowTreechange
|
return ErrIntOverflowTreechange
|
||||||
@ -2227,11 +2229,24 @@ func (m *TreeChange) Unmarshal(dAtA []byte) error {
|
|||||||
}
|
}
|
||||||
b := dAtA[iNdEx]
|
b := dAtA[iNdEx]
|
||||||
iNdEx++
|
iNdEx++
|
||||||
m.CurrentReadKeyHash |= uint64(b&0x7F) << shift
|
stringLen |= uint64(b&0x7F) << shift
|
||||||
if b < 0x80 {
|
if b < 0x80 {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
intStringLen := int(stringLen)
|
||||||
|
if intStringLen < 0 {
|
||||||
|
return ErrInvalidLengthTreechange
|
||||||
|
}
|
||||||
|
postIndex := iNdEx + intStringLen
|
||||||
|
if postIndex < 0 {
|
||||||
|
return ErrInvalidLengthTreechange
|
||||||
|
}
|
||||||
|
if postIndex > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
m.ReadKeyId = string(dAtA[iNdEx:postIndex])
|
||||||
|
iNdEx = postIndex
|
||||||
case 6:
|
case 6:
|
||||||
if wireType != 0 {
|
if wireType != 0 {
|
||||||
return fmt.Errorf("proto: wrong wireType = %d for field Timestamp", wireType)
|
return fmt.Errorf("proto: wrong wireType = %d for field Timestamp", wireType)
|
||||||
|
|||||||
@ -295,7 +295,13 @@ func (s *space) PutTree(ctx context.Context, payload treestorage.TreeStorageCrea
|
|||||||
SyncStatus: s.syncStatus,
|
SyncStatus: s.syncStatus,
|
||||||
PeerGetter: s.peerManager,
|
PeerGetter: s.peerManager,
|
||||||
}
|
}
|
||||||
return synctree.PutSyncTree(ctx, payload, deps)
|
t, err = synctree.PutSyncTree(ctx, payload, deps)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
s.treesUsed.Add(1)
|
||||||
|
log.Debug("incrementing counter", zap.String("id", payload.RootRawChange.Id), zap.Int32("trees", s.treesUsed.Load()), zap.String("spaceId", s.id))
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
type BuildTreeOpts struct {
|
type BuildTreeOpts struct {
|
||||||
@ -330,8 +336,8 @@ func (s *space) BuildTree(ctx context.Context, id string, opts BuildTreeOpts) (t
|
|||||||
if t, err = synctree.BuildSyncTreeOrGetRemote(ctx, id, deps); err != nil {
|
if t, err = synctree.BuildSyncTreeOrGetRemote(ctx, id, deps); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
log.Debug("incrementing counter", zap.String("id", id), zap.String("spaceId", s.id))
|
|
||||||
s.treesUsed.Add(1)
|
s.treesUsed.Add(1)
|
||||||
|
log.Debug("incrementing counter", zap.String("id", id), zap.Int32("trees", s.treesUsed.Load()), zap.String("spaceId", s.id))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -406,8 +412,8 @@ func (s *space) handleMessage(msg HandleMessage) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *space) onObjectClose(id string) {
|
func (s *space) onObjectClose(id string) {
|
||||||
log.Debug("decrementing counter", zap.String("id", id), zap.String("spaceId", s.id))
|
|
||||||
s.treesUsed.Add(-1)
|
s.treesUsed.Add(-1)
|
||||||
|
log.Debug("decrementing counter", zap.String("id", id), zap.Int32("trees", s.treesUsed.Load()), zap.String("spaceId", s.id))
|
||||||
_ = s.handleQueue.CloseThread(id)
|
_ = s.handleQueue.CloseThread(id)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -17,6 +17,7 @@ import (
|
|||||||
"github.com/anytypeio/any-sync/commonspace/syncstatus"
|
"github.com/anytypeio/any-sync/commonspace/syncstatus"
|
||||||
"github.com/anytypeio/any-sync/net/peer"
|
"github.com/anytypeio/any-sync/net/peer"
|
||||||
"github.com/anytypeio/any-sync/net/pool"
|
"github.com/anytypeio/any-sync/net/pool"
|
||||||
|
"github.com/anytypeio/any-sync/net/rpc/rpcerr"
|
||||||
"github.com/anytypeio/any-sync/nodeconf"
|
"github.com/anytypeio/any-sync/nodeconf"
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
)
|
)
|
||||||
@ -35,6 +36,7 @@ const AddSpaceCtxKey ctxKey = 0
|
|||||||
|
|
||||||
type SpaceService interface {
|
type SpaceService interface {
|
||||||
DeriveSpace(ctx context.Context, payload SpaceDerivePayload) (string, error)
|
DeriveSpace(ctx context.Context, payload SpaceDerivePayload) (string, error)
|
||||||
|
DeriveId(ctx context.Context, payload SpaceDerivePayload) (string, error)
|
||||||
CreateSpace(ctx context.Context, payload SpaceCreatePayload) (string, error)
|
CreateSpace(ctx context.Context, payload SpaceCreatePayload) (string, error)
|
||||||
NewSpace(ctx context.Context, id string) (sp Space, err error)
|
NewSpace(ctx context.Context, id string) (sp Space, err error)
|
||||||
app.Component
|
app.Component
|
||||||
@ -88,6 +90,15 @@ func (s *spaceService) CreateSpace(ctx context.Context, payload SpaceCreatePaylo
|
|||||||
return store.Id(), nil
|
return store.Id(), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *spaceService) DeriveId(ctx context.Context, payload SpaceDerivePayload) (id string, err error) {
|
||||||
|
storageCreate, err := storagePayloadForSpaceDerive(payload)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
id = storageCreate.SpaceHeaderWithId.Id
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func (s *spaceService) DeriveSpace(ctx context.Context, payload SpaceDerivePayload) (id string, err error) {
|
func (s *spaceService) DeriveSpace(ctx context.Context, payload SpaceDerivePayload) (id string, err error) {
|
||||||
storageCreate, err := storagePayloadForSpaceDerive(payload)
|
storageCreate, err := storagePayloadForSpaceDerive(payload)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -206,6 +217,7 @@ func (s *spaceService) getSpaceStorageFromRemote(ctx context.Context, id string)
|
|||||||
cl := spacesyncproto.NewDRPCSpaceSyncClient(p)
|
cl := spacesyncproto.NewDRPCSpaceSyncClient(p)
|
||||||
res, err := cl.SpacePull(ctx, &spacesyncproto.SpacePullRequest{Id: id})
|
res, err := cl.SpacePull(ctx, &spacesyncproto.SpacePullRequest{Id: id})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
err = rpcerr.Unwrap(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
6
go.mod
6
go.mod
@ -15,8 +15,8 @@ require (
|
|||||||
github.com/huandu/skiplist v1.2.0
|
github.com/huandu/skiplist v1.2.0
|
||||||
github.com/ipfs/go-block-format v0.1.1
|
github.com/ipfs/go-block-format v0.1.1
|
||||||
github.com/ipfs/go-blockservice v0.5.0
|
github.com/ipfs/go-blockservice v0.5.0
|
||||||
github.com/ipfs/go-cid v0.3.2
|
github.com/ipfs/go-cid v0.4.0
|
||||||
github.com/ipfs/go-ipfs-blockstore v1.2.0
|
github.com/ipfs/go-ipfs-blockstore v1.3.0
|
||||||
github.com/ipfs/go-ipfs-chunker v0.0.5
|
github.com/ipfs/go-ipfs-chunker v0.0.5
|
||||||
github.com/ipfs/go-ipfs-exchange-interface v0.2.0
|
github.com/ipfs/go-ipfs-exchange-interface v0.2.0
|
||||||
github.com/ipfs/go-ipld-format v0.4.0
|
github.com/ipfs/go-ipld-format v0.4.0
|
||||||
@ -25,7 +25,7 @@ require (
|
|||||||
github.com/libp2p/go-libp2p v0.24.1
|
github.com/libp2p/go-libp2p v0.24.1
|
||||||
github.com/minio/sha256-simd v1.0.0
|
github.com/minio/sha256-simd v1.0.0
|
||||||
github.com/mr-tron/base58 v1.2.0
|
github.com/mr-tron/base58 v1.2.0
|
||||||
github.com/multiformats/go-multibase v0.1.1
|
github.com/multiformats/go-multibase v0.2.0
|
||||||
github.com/multiformats/go-multihash v0.2.1
|
github.com/multiformats/go-multihash v0.2.1
|
||||||
github.com/prometheus/client_golang v1.14.0
|
github.com/prometheus/client_golang v1.14.0
|
||||||
github.com/stretchr/testify v1.8.2
|
github.com/stretchr/testify v1.8.2
|
||||||
|
|||||||
13
go.sum
13
go.sum
@ -106,15 +106,15 @@ github.com/ipfs/go-cid v0.0.4/go.mod h1:4LLaPOQwmk5z9LBgQnpkivrx8BJjUyGwTXCd5Xfj
|
|||||||
github.com/ipfs/go-cid v0.0.5/go.mod h1:plgt+Y5MnOey4vO4UlUazGqdbEXuFYitED67FexhXog=
|
github.com/ipfs/go-cid v0.0.5/go.mod h1:plgt+Y5MnOey4vO4UlUazGqdbEXuFYitED67FexhXog=
|
||||||
github.com/ipfs/go-cid v0.0.6/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I=
|
github.com/ipfs/go-cid v0.0.6/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I=
|
||||||
github.com/ipfs/go-cid v0.0.7/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I=
|
github.com/ipfs/go-cid v0.0.7/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I=
|
||||||
github.com/ipfs/go-cid v0.3.2 h1:OGgOd+JCFM+y1DjWPmVH+2/4POtpDzwcr7VgnB7mZXc=
|
github.com/ipfs/go-cid v0.4.0 h1:a4pdZq0sx6ZSxbCizebnKiMCx/xI/aBBFlB73IgH4rA=
|
||||||
github.com/ipfs/go-cid v0.3.2/go.mod h1:gQ8pKqT/sUxGY+tIwy1RPpAojYu7jAyCp5Tz1svoupw=
|
github.com/ipfs/go-cid v0.4.0/go.mod h1:uQHwDeX4c6CtyrFwdqyhpNcxVewur1M7l7fNU7LKwZk=
|
||||||
github.com/ipfs/go-datastore v0.5.0/go.mod h1:9zhEApYMTl17C8YDp7JmU7sQZi2/wqiYh73hakZ90Bk=
|
github.com/ipfs/go-datastore v0.5.0/go.mod h1:9zhEApYMTl17C8YDp7JmU7sQZi2/wqiYh73hakZ90Bk=
|
||||||
github.com/ipfs/go-datastore v0.6.0 h1:JKyz+Gvz1QEZw0LsX1IBn+JFCJQH4SJVFtM4uWU0Myk=
|
github.com/ipfs/go-datastore v0.6.0 h1:JKyz+Gvz1QEZw0LsX1IBn+JFCJQH4SJVFtM4uWU0Myk=
|
||||||
github.com/ipfs/go-datastore v0.6.0/go.mod h1:rt5M3nNbSO/8q1t4LNkLyUwRs8HupMeN/8O4Vn9YAT8=
|
github.com/ipfs/go-datastore v0.6.0/go.mod h1:rt5M3nNbSO/8q1t4LNkLyUwRs8HupMeN/8O4Vn9YAT8=
|
||||||
github.com/ipfs/go-detect-race v0.0.1 h1:qX/xay2W3E4Q1U7d9lNs1sU9nvguX0a7319XbyQ6cOk=
|
github.com/ipfs/go-detect-race v0.0.1 h1:qX/xay2W3E4Q1U7d9lNs1sU9nvguX0a7319XbyQ6cOk=
|
||||||
github.com/ipfs/go-detect-race v0.0.1/go.mod h1:8BNT7shDZPo99Q74BpGMK+4D8Mn4j46UU0LZ723meps=
|
github.com/ipfs/go-detect-race v0.0.1/go.mod h1:8BNT7shDZPo99Q74BpGMK+4D8Mn4j46UU0LZ723meps=
|
||||||
github.com/ipfs/go-ipfs-blockstore v1.2.0 h1:n3WTeJ4LdICWs/0VSfjHrlqpPpl6MZ+ySd3j8qz0ykw=
|
github.com/ipfs/go-ipfs-blockstore v1.3.0 h1:m2EXaWgwTzAfsmt5UdJ7Is6l4gJcaM/A12XwJyvYvMM=
|
||||||
github.com/ipfs/go-ipfs-blockstore v1.2.0/go.mod h1:eh8eTFLiINYNSNawfZOC7HOxNTxpB1PFuA5E1m/7exE=
|
github.com/ipfs/go-ipfs-blockstore v1.3.0/go.mod h1:KgtZyc9fq+P2xJUiCAzbRdhhqJHvsw8u2Dlqy2MyRTE=
|
||||||
github.com/ipfs/go-ipfs-blocksutil v0.0.1 h1:Eh/H4pc1hsvhzsQoMEP3Bke/aW5P5rVM1IWFJMcGIPQ=
|
github.com/ipfs/go-ipfs-blocksutil v0.0.1 h1:Eh/H4pc1hsvhzsQoMEP3Bke/aW5P5rVM1IWFJMcGIPQ=
|
||||||
github.com/ipfs/go-ipfs-chunker v0.0.5 h1:ojCf7HV/m+uS2vhUGWcogIIxiO5ubl5O57Q7NapWLY8=
|
github.com/ipfs/go-ipfs-chunker v0.0.5 h1:ojCf7HV/m+uS2vhUGWcogIIxiO5ubl5O57Q7NapWLY8=
|
||||||
github.com/ipfs/go-ipfs-chunker v0.0.5/go.mod h1:jhgdF8vxRHycr00k13FM8Y0E+6BoalYeobXmUyTreP8=
|
github.com/ipfs/go-ipfs-chunker v0.0.5/go.mod h1:jhgdF8vxRHycr00k13FM8Y0E+6BoalYeobXmUyTreP8=
|
||||||
@ -136,7 +136,6 @@ github.com/ipfs/go-ipld-cbor v0.0.6 h1:pYuWHyvSpIsOOLw4Jy7NbBkCyzLDcl64Bf/LZW7eB
|
|||||||
github.com/ipfs/go-ipld-cbor v0.0.6/go.mod h1:ssdxxaLJPXH7OjF5V4NSjBbcfh+evoR4ukuru0oPXMA=
|
github.com/ipfs/go-ipld-cbor v0.0.6/go.mod h1:ssdxxaLJPXH7OjF5V4NSjBbcfh+evoR4ukuru0oPXMA=
|
||||||
github.com/ipfs/go-ipld-format v0.0.1/go.mod h1:kyJtbkDALmFHv3QR6et67i35QzO3S0dCDnkOJhcZkms=
|
github.com/ipfs/go-ipld-format v0.0.1/go.mod h1:kyJtbkDALmFHv3QR6et67i35QzO3S0dCDnkOJhcZkms=
|
||||||
github.com/ipfs/go-ipld-format v0.2.0/go.mod h1:3l3C1uKoadTPbeNfrDi+xMInYKlx2Cvg1BuydPSdzQs=
|
github.com/ipfs/go-ipld-format v0.2.0/go.mod h1:3l3C1uKoadTPbeNfrDi+xMInYKlx2Cvg1BuydPSdzQs=
|
||||||
github.com/ipfs/go-ipld-format v0.3.0/go.mod h1:co/SdBE8h99968X0hViiw1MNlh6fvxxnHpvVLnH7jSM=
|
|
||||||
github.com/ipfs/go-ipld-format v0.4.0 h1:yqJSaJftjmjc9jEOFYlpkwOLVKv68OD27jFLlSghBlQ=
|
github.com/ipfs/go-ipld-format v0.4.0 h1:yqJSaJftjmjc9jEOFYlpkwOLVKv68OD27jFLlSghBlQ=
|
||||||
github.com/ipfs/go-ipld-format v0.4.0/go.mod h1:co/SdBE8h99968X0hViiw1MNlh6fvxxnHpvVLnH7jSM=
|
github.com/ipfs/go-ipld-format v0.4.0/go.mod h1:co/SdBE8h99968X0hViiw1MNlh6fvxxnHpvVLnH7jSM=
|
||||||
github.com/ipfs/go-ipld-legacy v0.1.1 h1:BvD8PEuqwBHLTKqlGFTHSwrwFOMkVESEvwIYwR2cdcc=
|
github.com/ipfs/go-ipld-legacy v0.1.1 h1:BvD8PEuqwBHLTKqlGFTHSwrwFOMkVESEvwIYwR2cdcc=
|
||||||
@ -236,8 +235,8 @@ github.com/multiformats/go-multiaddr-dns v0.3.1 h1:QgQgR+LQVt3NPTjbrLLpsaT2ufAA2
|
|||||||
github.com/multiformats/go-multiaddr-fmt v0.1.0 h1:WLEFClPycPkp4fnIzoFoV9FVd49/eQsuaL3/CWe167E=
|
github.com/multiformats/go-multiaddr-fmt v0.1.0 h1:WLEFClPycPkp4fnIzoFoV9FVd49/eQsuaL3/CWe167E=
|
||||||
github.com/multiformats/go-multibase v0.0.1/go.mod h1:bja2MqRZ3ggyXtZSEDKpl0uO/gviWFaSteVbWT51qgs=
|
github.com/multiformats/go-multibase v0.0.1/go.mod h1:bja2MqRZ3ggyXtZSEDKpl0uO/gviWFaSteVbWT51qgs=
|
||||||
github.com/multiformats/go-multibase v0.0.3/go.mod h1:5+1R4eQrT3PkYZ24C3W2Ue2tPwIdYQD509ZjSb5y9Oc=
|
github.com/multiformats/go-multibase v0.0.3/go.mod h1:5+1R4eQrT3PkYZ24C3W2Ue2tPwIdYQD509ZjSb5y9Oc=
|
||||||
github.com/multiformats/go-multibase v0.1.1 h1:3ASCDsuLX8+j4kx58qnJ4YFq/JWTJpCyDW27ztsVTOI=
|
github.com/multiformats/go-multibase v0.2.0 h1:isdYCVLvksgWlMW9OZRYJEa9pZETFivncJHmHnnd87g=
|
||||||
github.com/multiformats/go-multibase v0.1.1/go.mod h1:ZEjHE+IsUrgp5mhlEAYjMtZwK1k4haNkcaPg9aoe1a8=
|
github.com/multiformats/go-multibase v0.2.0/go.mod h1:bFBZX4lKCA/2lyOFSAoKH5SS6oPyjtnzK/XTFDPkNuk=
|
||||||
github.com/multiformats/go-multicodec v0.8.0 h1:evBmgkbSQux+Ds2IgfhkO38Dl2GDtRW8/Rp6YiSHX/Q=
|
github.com/multiformats/go-multicodec v0.8.0 h1:evBmgkbSQux+Ds2IgfhkO38Dl2GDtRW8/Rp6YiSHX/Q=
|
||||||
github.com/multiformats/go-multicodec v0.8.0/go.mod h1:GUC8upxSBE4oG+q3kWZRw/+6yC1BqO550bjhWsJbZlw=
|
github.com/multiformats/go-multicodec v0.8.0/go.mod h1:GUC8upxSBE4oG+q3kWZRw/+6yC1BqO550bjhWsJbZlw=
|
||||||
github.com/multiformats/go-multihash v0.0.1/go.mod h1:w/5tugSrLEbWqlcgJabL3oHFKTwfvkofsjW2Qa1ct4U=
|
github.com/multiformats/go-multihash v0.0.1/go.mod h1:w/5tugSrLEbWqlcgJabL3oHFKTwfvkofsjW2Qa1ct4U=
|
||||||
|
|||||||
@ -2,15 +2,16 @@ package peer
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"sync/atomic"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/anytypeio/any-sync/app/logger"
|
"github.com/anytypeio/any-sync/app/logger"
|
||||||
"github.com/libp2p/go-libp2p/core/sec"
|
"github.com/libp2p/go-libp2p/core/sec"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
"storj.io/drpc"
|
"storj.io/drpc"
|
||||||
"sync/atomic"
|
|
||||||
"time"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var log = logger.NewNamed("peer")
|
var log = logger.NewNamed("common.net.peer")
|
||||||
|
|
||||||
func NewPeer(sc sec.SecureConn, conn drpc.Conn) Peer {
|
func NewPeer(sc sec.SecureConn, conn drpc.Conn) Peer {
|
||||||
return &peer{
|
return &peer{
|
||||||
|
|||||||
@ -67,6 +67,7 @@ func (p *pool) GetOneOf(ctx context.Context, peerIds []string) (peer.Peer, error
|
|||||||
default:
|
default:
|
||||||
return pr, nil
|
return pr, nil
|
||||||
}
|
}
|
||||||
|
_, _ = p.cache.Remove(ctx, peerId)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// shuffle ids for better consistency
|
// shuffle ids for better consistency
|
||||||
|
|||||||
@ -2,14 +2,15 @@ package timeoutconn
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"github.com/anytypeio/any-sync/app/logger"
|
|
||||||
"go.uber.org/zap"
|
|
||||||
"net"
|
"net"
|
||||||
"os"
|
"os"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/anytypeio/any-sync/app/logger"
|
||||||
|
"go.uber.org/zap"
|
||||||
)
|
)
|
||||||
|
|
||||||
var log = logger.NewNamed("net.timeoutconn")
|
var log = logger.NewNamed("common.net.timeoutconn")
|
||||||
|
|
||||||
type Conn struct {
|
type Conn struct {
|
||||||
net.Conn
|
net.Conn
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user