bilibili-backup/app/infra/databus/model/model.go

63 lines
1.0 KiB
Go
Raw Normal View History

2019-04-22 10:59:20 +08:00
package model
import (
"errors"
)
const (
bit1 = int8(1)
bit2 = int8(1) << 1
// PubOnly pub only
PubOnly = bit2 | int8(0)
// SubOnly sub only
SubOnly = int8(0) | bit1
// PubSub pub and sub
PubSub = bit2 | bit1
)
var (
errGroup = errors.New("error group")
errTopic = errors.New("error topic")
errKey = errors.New("error key")
errSecret = errors.New("error secret")
)
// Auth databus auth info accordance with table:bilibili_databus_v2.auth
type Auth struct {
Group string
Topic string
Operation int8
Key string
Secret string
Batch int64
Cluster string
}
// CanPub judge producer auth
func (a *Auth) CanPub() bool {
return a.Operation&bit2 == bit2
}
// CanSub judge consumer auth
func (a *Auth) CanSub() bool {
return a.Operation&bit1 == bit1
}
// Auth judge auth
func (a *Auth) Auth(group, topic, key, secret string) error {
if a.Group != group {
return errGroup
}
if a.Topic != topic {
return errTopic
}
if a.Key != key {
return errKey
}
if a.Secret != secret {
return errSecret
}
return nil
}