Documentation ¶
Overview ¶
Package freezer implements a persistence layer for Grumble.
Index ¶
- Constants
- Variables
- type ACL
- type Ban
- func (this *Ban) GetCertHash() string
- func (this *Ban) GetDuration() uint32
- func (this *Ban) GetIp() []byte
- func (this *Ban) GetMask() uint32
- func (this *Ban) GetReason() string
- func (this *Ban) GetStart() int64
- func (this *Ban) GetUsername() string
- func (*Ban) ProtoMessage()
- func (this *Ban) Reset()
- func (this *Ban) String() string
- type BanList
- type Channel
- func (this *Channel) GetDescriptionBlob() string
- func (this *Channel) GetId() uint32
- func (this *Channel) GetInheritAcl() bool
- func (this *Channel) GetName() string
- func (this *Channel) GetParentId() uint32
- func (this *Channel) GetPosition() int64
- func (*Channel) ProtoMessage()
- func (this *Channel) Reset()
- func (this *Channel) String() string
- type ChannelRemove
- type ConfigKeyValuePair
- type Group
- type Log
- type LogTx
- type Server
- type User
- func (this *User) GetCertHash() string
- func (this *User) GetCommentBlob() string
- func (this *User) GetEmail() string
- func (this *User) GetId() uint32
- func (this *User) GetLastActive() uint64
- func (this *User) GetLastChannelId() uint32
- func (this *User) GetName() string
- func (this *User) GetPassword() string
- func (this *User) GetTextureBlob() string
- func (*User) ProtoMessage()
- func (this *User) Reset()
- func (this *User) String() string
- type UserRemove
- type Walker
Constants ¶
const ( ServerType typeKind = iota ConfigKeyValuePairType BanListType UserType UserRemoveType ChannelType ChannelRemoveType )
Variables ¶
var ( ErrTxGroupFull = errors.New("transction group is full") ErrTxGroupValueTooBig = errors.New("value too big to put inside the txgroup") )
Writer errors
var ( ErrUnexpectedEndOfRecord = errors.New("unexpected end of record") ErrCRC32Mismatch = errors.New("CRC32 mismatch") ErrRemainingBytesForRecord = errors.New("remaining bytes in record") ErrRecordTooBig = errors.New("the record in the file is too big") )
Walker errors
Functions ¶
This section is empty.
Types ¶
type ACL ¶
type ACL struct { UserId *uint32 `protobuf:"varint,1,opt,name=user_id" json:"user_id,omitempty"` Group *string `protobuf:"bytes,2,opt,name=group" json:"group,omitempty"` ApplyHere *bool `protobuf:"varint,3,opt,name=apply_here" json:"apply_here,omitempty"` ApplySubs *bool `protobuf:"varint,4,opt,name=apply_subs" json:"apply_subs,omitempty"` Allow *uint32 `protobuf:"varint,5,opt,name=allow" json:"allow,omitempty"` Deny *uint32 `protobuf:"varint,6,opt,name=deny" json:"deny,omitempty"` XXX_unrecognized []byte `json:"-"` }
func (*ACL) GetApplyHere ¶
func (*ACL) GetApplySubs ¶
func (*ACL) ProtoMessage ¶
func (*ACL) ProtoMessage()
type Ban ¶
type Ban struct { Ip []byte `protobuf:"bytes,1,opt,name=ip" json:"ip,omitempty"` Mask *uint32 `protobuf:"varint,2,opt,name=mask" json:"mask,omitempty"` Username *string `protobuf:"bytes,3,opt,name=username" json:"username,omitempty"` CertHash *string `protobuf:"bytes,4,opt,name=cert_hash" json:"cert_hash,omitempty"` Reason *string `protobuf:"bytes,5,opt,name=reason" json:"reason,omitempty"` Start *int64 `protobuf:"varint,6,opt,name=start" json:"start,omitempty"` Duration *uint32 `protobuf:"varint,7,opt,name=duration" json:"duration,omitempty"` XXX_unrecognized []byte `json:"-"` }
func (*Ban) GetCertHash ¶
func (*Ban) GetDuration ¶
func (*Ban) GetUsername ¶
func (*Ban) ProtoMessage ¶
func (*Ban) ProtoMessage()
type BanList ¶
type BanList struct { Bans []*Ban `protobuf:"bytes,1,rep,name=bans" json:"bans,omitempty"` XXX_unrecognized []byte `json:"-"` }
func (*BanList) ProtoMessage ¶
func (*BanList) ProtoMessage()
type Channel ¶
type Channel struct { Id *uint32 `protobuf:"varint,1,opt,name=id" json:"id,omitempty"` Name *string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` ParentId *uint32 `protobuf:"varint,3,opt,name=parent_id" json:"parent_id,omitempty"` Position *int64 `protobuf:"varint,4,opt,name=position" json:"position,omitempty"` InheritAcl *bool `protobuf:"varint,5,opt,name=inherit_acl" json:"inherit_acl,omitempty"` Links []uint32 `protobuf:"varint,6,rep,name=links" json:"links,omitempty"` Acl []*ACL `protobuf:"bytes,7,rep,name=acl" json:"acl,omitempty"` Groups []*Group `protobuf:"bytes,8,rep,name=groups" json:"groups,omitempty"` DescriptionBlob *string `protobuf:"bytes,9,opt,name=description_blob" json:"description_blob,omitempty"` XXX_unrecognized []byte `json:"-"` }
func (*Channel) GetDescriptionBlob ¶
func (*Channel) GetInheritAcl ¶
func (*Channel) GetParentId ¶
func (*Channel) GetPosition ¶
func (*Channel) ProtoMessage ¶
func (*Channel) ProtoMessage()
type ChannelRemove ¶
type ChannelRemove struct { Id *uint32 `protobuf:"varint,1,opt,name=id" json:"id,omitempty"` XXX_unrecognized []byte `json:"-"` }
func (*ChannelRemove) GetId ¶
func (this *ChannelRemove) GetId() uint32
func (*ChannelRemove) ProtoMessage ¶
func (*ChannelRemove) ProtoMessage()
func (*ChannelRemove) Reset ¶
func (this *ChannelRemove) Reset()
func (*ChannelRemove) String ¶
func (this *ChannelRemove) String() string
type ConfigKeyValuePair ¶
type ConfigKeyValuePair struct { Key *string `protobuf:"bytes,1,req,name=key" json:"key,omitempty"` Value *string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"` XXX_unrecognized []byte `json:"-"` }
func (*ConfigKeyValuePair) GetKey ¶
func (this *ConfigKeyValuePair) GetKey() string
func (*ConfigKeyValuePair) GetValue ¶
func (this *ConfigKeyValuePair) GetValue() string
func (*ConfigKeyValuePair) ProtoMessage ¶
func (*ConfigKeyValuePair) ProtoMessage()
func (*ConfigKeyValuePair) Reset ¶
func (this *ConfigKeyValuePair) Reset()
func (*ConfigKeyValuePair) String ¶
func (this *ConfigKeyValuePair) String() string
type Group ¶
type Group struct { Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` Inherit *bool `protobuf:"varint,2,opt,name=inherit" json:"inherit,omitempty"` Inheritable *bool `protobuf:"varint,3,opt,name=inheritable" json:"inheritable,omitempty"` Add []uint32 `protobuf:"varint,4,rep,name=add" json:"add,omitempty"` Remove []uint32 `protobuf:"varint,5,rep,name=remove" json:"remove,omitempty"` XXX_unrecognized []byte `json:"-"` }
func (*Group) GetInherit ¶
func (*Group) GetInheritable ¶
func (*Group) ProtoMessage ¶
func (*Group) ProtoMessage()
type Log ¶
type Log struct {
// contains filtered or unexported fields
}
Log implements an append-only log for flattened protobuf-encoded log entries.
These log entries are typically state-change deltas for a Grumble server's main data strutures.
The log supports atomic transactions. Transaction groups are persisted to disk with a checksum that covers the whole transaction group. In case of a failure, none of the entries of a transaction will be applied.
type LogTx ¶
type LogTx struct {
// contains filtered or unexported fields
}
Type LogTx represents a transaction in the log. Transactions can be used to group several changes into an atomic entity in the log file.
type Server ¶
type Server struct { Config []*ConfigKeyValuePair `protobuf:"bytes,2,rep,name=config" json:"config,omitempty"` BanList *BanList `protobuf:"bytes,3,opt,name=ban_list" json:"ban_list,omitempty"` Channels []*Channel `protobuf:"bytes,4,rep,name=channels" json:"channels,omitempty"` Users []*User `protobuf:"bytes,5,rep,name=users" json:"users,omitempty"` XXX_unrecognized []byte `json:"-"` }
func (*Server) GetBanList ¶
func (*Server) ProtoMessage ¶
func (*Server) ProtoMessage()
type User ¶
type User struct { Id *uint32 `protobuf:"varint,1,opt,name=id" json:"id,omitempty"` Name *string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` Password *string `protobuf:"bytes,3,opt,name=password" json:"password,omitempty"` CertHash *string `protobuf:"bytes,4,opt,name=cert_hash" json:"cert_hash,omitempty"` Email *string `protobuf:"bytes,5,opt,name=email" json:"email,omitempty"` TextureBlob *string `protobuf:"bytes,6,opt,name=texture_blob" json:"texture_blob,omitempty"` CommentBlob *string `protobuf:"bytes,7,opt,name=comment_blob" json:"comment_blob,omitempty"` LastChannelId *uint32 `protobuf:"varint,8,opt,name=last_channel_id" json:"last_channel_id,omitempty"` LastActive *uint64 `protobuf:"varint,9,opt,name=last_active" json:"last_active,omitempty"` XXX_unrecognized []byte `json:"-"` }
func (*User) GetCertHash ¶
func (*User) GetCommentBlob ¶
func (*User) GetLastActive ¶
func (*User) GetLastChannelId ¶
func (*User) GetPassword ¶
func (*User) GetTextureBlob ¶
func (*User) ProtoMessage ¶
func (*User) ProtoMessage()
type UserRemove ¶
type UserRemove struct { Id *uint32 `protobuf:"varint,1,opt,name=id" json:"id,omitempty"` XXX_unrecognized []byte `json:"-"` }
func (*UserRemove) GetId ¶
func (this *UserRemove) GetId() uint32
func (*UserRemove) ProtoMessage ¶
func (*UserRemove) ProtoMessage()
func (*UserRemove) Reset ¶
func (this *UserRemove) Reset()
func (*UserRemove) String ¶
func (this *UserRemove) String() string
type Walker ¶
type Walker struct {
// contains filtered or unexported fields
}
Type Walker implements a method for iterating the transaction groups of an immutable Log.
func NewReaderWalker ¶
Create a new Walker that iterates over the log entries of a given Reader.
func (*Walker) Next ¶
Next returns the next transaction group in the log as a slice of pointers to the protobuf-serialized log entries.
This method will only attempt to serialize types with type identifiers that this package knows of. In case an unknown type identifier is found in a transaction group, it is silently ignored (it's skipped).
On error, Next returns a nil slice and a non-nil err. When the end of the file is reached, Next returns nil, os.EOF.