friend

package
v0.0.0-...-516970c Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 26, 2019 License: LGPL-3.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const (
	FriendOpTypeInvalid pkgservice.OpType = iota

	FriendOpTypeCreateFriend
	FriendOpTypeDeleteFriend

	FriendOpTypeCreateMessage

	FriendOpTypeCreateMedia

	NFriendOpType
)

optype

View Source
const (

	// friend-oplog
	AddFriendOplogMsg pkgservice.OpType //30
	AddFriendOplogsMsg

	AddPendingFriendOplogMsg
	AddPendingFriendOplogsMsg

	SyncFriendOplogMsg
	SyncFriendOplogAckMsg
	SyncFriendOplogNewOplogsMsg
	SyncFriendOplogNewOplogsAckMsg

	InvalidSyncFriendOplogMsg

	ForceSyncFriendOplogMsg
	ForceSyncFriendOplogAckMsg
	ForceSyncFriendOplogByMerkleMsg
	ForceSyncFriendOplogByMerkleAckMsg
	ForceSyncFriendOplogByOplogAckMsg

	SyncPendingFriendOplogMsg
	SyncPendingFriendOplogAckMsg

	SyncCreateMessageMsg
	SyncCreateMessageAckMsg

	SyncCreateMessageBlockMsg
	SyncCreateMessageBlockAckMsg

	// init friend info
	InitFriendInfoMsg
	InitFriendInfoAckMsg
)

protocol

View Source
const (
	MaxMasters = 2
)

max-masters

View Source
const (
	NFirstLineInBlock = 20
)

message

Variables

View Source
var (
	DBFriendIdxPrefix         = []byte(".frix")
	DBFriendIdx2Prefix        = []byte(".fri2")
	DBFriendPrefix            = []byte(".frdb")
	DBFriendOplogPrefix       = []byte(".frlg")
	DBFriendIdxOplogPrefix    = []byte(".frig")
	DBFriendMerkleOplogPrefix = []byte(".frmk")

	DBMessagePrefix    = []byte(".mgdb")
	DBMessageIdxPrefix = []byte(".mgix")

	DBLastSeenPrefix           = []byte(".frls")
	DBMessageCreateTSPrefix    = []byte(".frmc")
	DBMessageCreateTSIdxPrefix = []byte(".mcix")
	DBMessageCreateTS2Prefix   = []byte(".mcdb")

	DBFriendListSeenPrefix = []byte(".frsn")
)

db

View Source
var (
	MaxSyncRandomSeconds = 20
	MinSyncRandomSeconds = 10
)

sync

View Source
var (
	RenewOpKeySeconds  int64 = 86400
	ExpireOpKeySeconds int64 = 259200
)

op-key

View Source
var (
	DefaultConfig = Config{
		DataDir: filepath.Join(node.DefaultDataDir(), "friend"),

		MaxSyncRandomSeconds: 20,
		MinSyncRandomSeconds: 10,
	}
)

config

View Source
var (
	ErrInvalidFriend = errors.New("invalid friend")
)

Functions

func FriendOplogsToOplogs

func FriendOplogsToOplogs(typedLogs []*FriendOplog) []*pkgservice.BaseOplog

func InitFriend

func InitFriend(dataDir string) error

func MessagesToObjs

func MessagesToObjs(typedObjs []*Message) []pkgservice.Object

func NewEmptyApproveJoinFriend

func NewEmptyApproveJoinFriend() *pkgservice.ApproveJoinEntity

func TeardownFriend

func TeardownFriend()

Types

type ApproveJoin

type ApproveJoin struct {
	Friend *Friend `json:"f"`

	Oplog0     *pkgservice.BaseOplog   `json:"0"`
	MasterLogs []*pkgservice.BaseOplog `json:"M"`
	MemberLogs []*pkgservice.BaseOplog `json:"m"`
	OpKey      *pkgservice.KeyInfo     `json:"O"`
	OpKeyLog   *pkgservice.BaseOplog   `json:"o"`
}

type Backend

type Backend struct {
	*pkgservice.BaseService
	// contains filtered or unexported fields
}

func NewBackend

func NewBackend(ctx *pkgservice.ServiceContext, cfg *Config, id *types.PttID, ptt pkgservice.Ptt, accountBackend *account.Backend, contentBackend *content.Backend) (*Backend, error)

func (*Backend) APIs

func (b *Backend) APIs() []rpc.API

func (*Backend) CreateMessage

func (b *Backend) CreateMessage(entityIDBytes []byte, message [][]byte, mediaIDStrs []string) (*BackendCreateMessage, error)

func (*Backend) DeleteFriend

func (b *Backend) DeleteFriend(entityIDBytes []byte) (bool, error)

func (*Backend) ForceSyncFriendMerkle

func (b *Backend) ForceSyncFriendMerkle(entityIDBytes []byte) (bool, error)

func (*Backend) GetFriend

func (b *Backend) GetFriend(entityIDBytes []byte) (*BackendGetFriend, error)

func (*Backend) GetFriendByFriendID

func (b *Backend) GetFriendByFriendID(friendIDBytes []byte) (*BackendGetFriend, error)

func (*Backend) GetFriendList

func (b *Backend) GetFriendList(startIDBytes []byte, limit int, listOrder pttdb.ListOrder) ([]*BackendGetFriend, error)

func (*Backend) GetFriendListByMsgCreateTS

func (b *Backend) GetFriendListByMsgCreateTS(theTS int64, nanoTS uint32, limit int, listOrder pttdb.ListOrder) ([]*BackendGetFriend, error)

func (*Backend) GetFriendListSeen

func (b *Backend) GetFriendListSeen() (types.Timestamp, error)

func (*Backend) GetFriendOplogList

func (b *Backend) GetFriendOplogList(entityIDBytes []byte, logIDBytes []byte, limit int, listOrder pttdb.ListOrder) ([]*FriendOplog, error)

func (*Backend) GetFriendOplogMerkleNodeList

func (b *Backend) GetFriendOplogMerkleNodeList(entityIDBytes []byte, level pkgservice.MerkleTreeLevel, startKey []byte, limit int, listOrder pttdb.ListOrder) ([]*pkgservice.BackendMerkleNode, error)

func (*Backend) GetMessageBlockList

func (b *Backend) GetMessageBlockList(entityIDBytes []byte, msgIDBytes []byte, limit uint32) ([]*BackendMessageBlock, error)

func (*Backend) GetMessageList

func (b *Backend) GetMessageList(entityIDBytes []byte, startIDBytes []byte, limit int, listOrder pttdb.ListOrder) ([]*BackendGetMessage, error)

func (*Backend) GetPendingFriendOplogInternalList

func (b *Backend) GetPendingFriendOplogInternalList(entityIDBytes []byte, logIDBytes []byte, limit int, listOrder pttdb.ListOrder) ([]*FriendOplog, error)

func (*Backend) GetPendingFriendOplogMasterList

func (b *Backend) GetPendingFriendOplogMasterList(entityIDBytes []byte, logIDBytes []byte, limit int, listOrder pttdb.ListOrder) ([]*FriendOplog, error)

func (*Backend) GetRawFriend

func (b *Backend) GetRawFriend(entityIDBytes []byte) (*Friend, error)

func (*Backend) MarkFriendListSeen

func (b *Backend) MarkFriendListSeen() (types.Timestamp, error)

func (*Backend) MarkFriendSeen

func (b *Backend) MarkFriendSeen(entityIDBytes []byte) (types.Timestamp, error)

func (*Backend) Name

func (b *Backend) Name() string

func (*Backend) Start

func (b *Backend) Start() error

func (*Backend) Stop

func (b *Backend) Stop() error

type BackendCreateMessage

type BackendCreateMessage struct {
	FriendID  *types.PttID `json:"FID"`
	MessageID *types.PttID `json:"AID"`
	BlockID   *types.PttID `json:"cID"`
	NBlock    int          `json:"NB"`
}

type BackendGetFriend

type BackendGetFriend struct {
	ID       *types.PttID
	FriendID *types.PttID `json:"FID"`
	Name     []byte       `json:"N"`

	BoardID         *types.PttID    `json:"BID"`
	Status          types.Status    `json:"S"`
	ArticleCreateTS types.Timestamp //`json:"ACT"`
	LastSeen        types.Timestamp `json:"LT"`
}

BackendGetFriend provides just UserName and nothing else for saving the bandwidth

type BackendGetMessage

type BackendGetMessage struct {
	ID        *types.PttID
	CreateTS  types.Timestamp //`json:"CT"`
	UpdateTS  types.Timestamp //`json:"UT"`
	CreatorID *types.PttID    //`json:"CID"`
	FriendID  *types.PttID    //`json:"FID"`
	BlockID   *types.PttID    //`json:"cID"`
	NBlock    int             //`json:"N"`
	Status    types.Status    `json:"S"`
}

type BackendMessageBlock

type BackendMessageBlock struct {
	V         types.Version
	ID        *types.PttID
	MessageID *types.PttID `json:"AID"`
	ObjID     *types.PttID `json:"RID"`
	BlockID   uint32       `json:"BID"`

	Status types.Status `json:"S"`

	CreateTS types.Timestamp `json:"CT"`
	UpdateTS types.Timestamp `json:"UT"`

	CreatorID *types.PttID `json:"CID"`
	UpdaterID *types.PttID `json:"UID"`

	Buf [][]byte `json:"B"`
}

type Config

type Config struct {
	DataDir string

	MaxSyncRandomSeconds int
	MinSyncRandomSeconds int
}

func NewConfig

func NewConfig() (*Config, error)

type CreateMessage

type CreateMessage struct {
	Msg      [][]byte
	MediaIDs []*types.PttID
}

type Friend

type Friend struct {
	*pkgservice.BaseEntity `json:"e"`

	UpdateTS types.Timestamp `json:"UT"`

	Friend0ID *types.PttID `json:"f0"`
	Friend1ID *types.PttID `json:"f1"`
	FriendID  *types.PttID `json:"f"`

	BoardID *types.PttID   `json:"BID,omitempty"`
	Board   *content.Board `json:"-"`

	ProfileID *types.PttID     `json:"PID,omitempty"`
	Profile   *account.Profile `json:"-"`

	// get from other dbs
	LastSeen        types.Timestamp `json:"-"`
	MessageCreateTS types.Timestamp `json:"-"`
}

func NewEmptyFriend

func NewEmptyFriend() *Friend

func NewFriend

func NewFriend(friendID *types.PttID, ptt pkgservice.Ptt, service pkgservice.Service, spm pkgservice.ServiceProtocolManager, dbLock *types.LockMap) (*Friend, error)

func (*Friend) GetByFriendID

func (f *Friend) GetByFriendID(friendID *types.PttID) error

func (*Friend) GetUpdateTS

func (f *Friend) GetUpdateTS() types.Timestamp

func (*Friend) Idx2Key

func (f *Friend) Idx2Key() ([]byte, error)

func (*Friend) IdxKey

func (f *Friend) IdxKey() ([]byte, error)

func (*Friend) Init

func (*Friend) InitPM

func (f *Friend) InitPM(ptt pkgservice.Ptt, service pkgservice.Service) error

func (*Friend) LoadLastSeen

func (f *Friend) LoadLastSeen() (types.Timestamp, error)

func (*Friend) LoadMessageCreateTS

func (f *Friend) LoadMessageCreateTS() (types.Timestamp, error)

func (*Friend) LoadMessageCreateTS2

func (f *Friend) LoadMessageCreateTS2() (types.Timestamp, error)

func (*Friend) Marshal

func (f *Friend) Marshal() ([]byte, error)

func (*Friend) MarshalKey

func (f *Friend) MarshalKey() ([]byte, error)

func (*Friend) MarshalLastSeenKey

func (f *Friend) MarshalLastSeenKey() ([]byte, error)

func (*Friend) MarshalMessageCreateTSIdxKey

func (f *Friend) MarshalMessageCreateTSIdxKey() ([]byte, error)

func (*Friend) MarshalMessageCreateTSKey

func (f *Friend) MarshalMessageCreateTSKey() ([]byte, error)

func (*Friend) MarshalMessageCreateTSKey2

func (f *Friend) MarshalMessageCreateTSKey2(ts types.Timestamp) ([]byte, error)

func (*Friend) Save

func (f *Friend) Save(isLocked bool) error

func (*Friend) SaveLastSeen

func (f *Friend) SaveLastSeen(ts types.Timestamp) error

func (*Friend) SaveMessageCreateTS

func (f *Friend) SaveMessageCreateTS(ts types.Timestamp) error

func (*Friend) SaveMessageCreateTS2

func (f *Friend) SaveMessageCreateTS2(ts types.Timestamp) error

func (*Friend) SetUpdateTS

func (f *Friend) SetUpdateTS(ts types.Timestamp)

func (*Friend) Unmarshal

func (f *Friend) Unmarshal(theBytes []byte) error

type FriendOpCreateFriend

type FriendOpCreateFriend struct {
	FriendID *types.PttID
}

type FriendOpCreateMedia

type FriendOpCreateMedia struct {
	BlockInfoID *types.PttID `json:"BID"` // resized content-block-id
	Hashs       [][][]byte   `json:"H"`
	NBlock      int          `json:"NB"`
}

type FriendOpCreateMessage

type FriendOpCreateMessage struct {
	BlockInfoID *types.PttID `json:"BID"`
	Hashs       [][][]byte   `json:"H"`
	NBlock      int          `json:"NB"`

	MediaIDs []*types.PttID `json:"ms,omitempty"`
}

type FriendOpDeleteFriend

type FriendOpDeleteFriend struct {
}

type FriendOplog

type FriendOplog struct {
	*pkgservice.BaseOplog `json:"O"`
}

func NewFriendOplog

func NewFriendOplog(objID *types.PttID, ts types.Timestamp, doerID *types.PttID, op pkgservice.OpType, opData pkgservice.OpData, userID *types.PttID, dbLock *types.LockMap) (*FriendOplog, error)

func OplogToFriendOplog

func OplogToFriendOplog(oplog *pkgservice.BaseOplog) *FriendOplog

func OplogsToFriendOplogs

func OplogsToFriendOplogs(logs []*pkgservice.BaseOplog) []*FriendOplog

func (*FriendOplog) GetBaseOplog

func (o *FriendOplog) GetBaseOplog() *pkgservice.BaseOplog

type InitFriendInfo

type InitFriendInfo struct {
	ProfileData *account.ApproveJoinEntity    `json:"P"`
	BoardData   *pkgservice.ApproveJoinEntity `json:"b"`
}

type InitFriendInfoAck

type InitFriendInfoAck struct {
	FriendData  *pkgservice.ApproveJoinEntity `json:"F"`
	ProfileData *account.ApproveJoinEntity    `json:"P"`
	BoardData   *pkgservice.ApproveJoinEntity `json:"b"`
}

type Message

type Message struct {
	*pkgservice.BaseObject `json:"b"`

	UpdateTS types.Timestamp `json:"UT"`

	SyncInfo *pkgservice.BaseSyncInfo `json:"s,omitempty"`
}

func AliveMessages

func AliveMessages(typedObjs []*Message) []*Message

func NewEmptyMessage

func NewEmptyMessage() *Message

func NewMessage

func NewMessage(
	createTS types.Timestamp,
	creatorID *types.PttID,
	entityID *types.PttID,

	logID *types.PttID,

	status types.Status,

) (*Message, error)

func ObjsToMessages

func ObjsToMessages(objs []pkgservice.Object) []*Message

func (*Message) DeleteAll

func (m *Message) DeleteAll(isLocked bool) error

func (*Message) Get

func (m *Message) Get(isLocked bool) error

func (*Message) GetByID

func (m *Message) GetByID(isLocked bool) error

func (*Message) GetNewObjByID

func (m *Message) GetNewObjByID(id *types.PttID, isLocked bool) (pkgservice.Object, error)

func (*Message) GetSyncInfo

func (m *Message) GetSyncInfo() pkgservice.SyncInfo

func (*Message) GetUpdateTS

func (m *Message) GetUpdateTS() types.Timestamp

func (*Message) Marshal

func (m *Message) Marshal() ([]byte, error)

func (*Message) MarshalKey

func (m *Message) MarshalKey() ([]byte, error)

func (*Message) NewEmptyObj

func (m *Message) NewEmptyObj() pkgservice.Object

func (*Message) Save

func (m *Message) Save(isLocked bool) error

func (*Message) SetSyncInfo

func (m *Message) SetSyncInfo(theSyncInfo pkgservice.SyncInfo) error

func (*Message) SetUpdateTS

func (m *Message) SetUpdateTS(ts types.Timestamp)

func (*Message) Unmarshal

func (m *Message) Unmarshal(theBytes []byte) error

type PrivateAPI

type PrivateAPI struct {
	// contains filtered or unexported fields
}

func NewPrivateAPI

func NewPrivateAPI(b *Backend) *PrivateAPI

func (*PrivateAPI) CountPeers

func (api *PrivateAPI) CountPeers(entityID string) (int, error)

func (*PrivateAPI) CreateMessage

func (api *PrivateAPI) CreateMessage(entityID string, message [][]byte, mediaIDs []string) (*BackendCreateMessage, error)

func (*PrivateAPI) DeleteFriend

func (api *PrivateAPI) DeleteFriend(entityID string) (bool, error)

func (*PrivateAPI) ForceOpKey

func (api *PrivateAPI) ForceOpKey(entityID string) (bool, error)

func (*PrivateAPI) ForceSync

func (api *PrivateAPI) ForceSync(entityID string) (bool, error)

func (*PrivateAPI) ForceSyncFriendMerkle

func (api *PrivateAPI) ForceSyncFriendMerkle(entityID string) (bool, error)

func (*PrivateAPI) ForceSyncMasterMerkle

func (api *PrivateAPI) ForceSyncMasterMerkle(entityID string) (bool, error)

func (*PrivateAPI) ForceSyncMemberMerkle

func (api *PrivateAPI) ForceSyncMemberMerkle(entityID string) (bool, error)

func (*PrivateAPI) GetFriend

func (api *PrivateAPI) GetFriend(entityID string) (*BackendGetFriend, error)

func (*PrivateAPI) GetFriendByFriendID

func (api *PrivateAPI) GetFriendByFriendID(friendID string) (*BackendGetFriend, error)

func (*PrivateAPI) GetFriendList

func (api *PrivateAPI) GetFriendList(startingFriendID string, limit int) ([]*BackendGetFriend, error)

func (*PrivateAPI) GetFriendListByMsgCreateTS

func (api *PrivateAPI) GetFriendListByMsgCreateTS(ts int64, nanoTS uint32, limit int, listOrder pttdb.ListOrder) ([]*BackendGetFriend, error)

func (*PrivateAPI) GetFriendListSeen

func (api *PrivateAPI) GetFriendListSeen() (types.Timestamp, error)

func (*PrivateAPI) GetFriendOplogList

func (api *PrivateAPI) GetFriendOplogList(entityID string, logID string, limit int, listOrder pttdb.ListOrder) ([]*FriendOplog, error)

func (*PrivateAPI) GetFriendOplogMerkleNodeList

func (api *PrivateAPI) GetFriendOplogMerkleNodeList(entityID string, level uint8, startKey []byte, limit int, listOrder pttdb.ListOrder) ([]*pkgservice.BackendMerkleNode, error)

func (*PrivateAPI) GetMasterList

func (api *PrivateAPI) GetMasterList(entityID string, startID string, limit int, listOrder pttdb.ListOrder) ([]*pkgservice.Master, error)

func (*PrivateAPI) GetMasterListFromCache

func (api *PrivateAPI) GetMasterListFromCache(entityID string) ([]*pkgservice.Master, error)

func (*PrivateAPI) GetMasterOplogList

func (api *PrivateAPI) GetMasterOplogList(entityID string, logID string, limit int, listOrder pttdb.ListOrder) ([]*pkgservice.MasterOplog, error)

func (*PrivateAPI) GetMasterOplogMerkleNodeList

func (api *PrivateAPI) GetMasterOplogMerkleNodeList(entityID string, level uint8, startKey []byte, limit int, listOrder pttdb.ListOrder) ([]*pkgservice.BackendMerkleNode, error)

func (*PrivateAPI) GetMemberList

func (api *PrivateAPI) GetMemberList(entityID string, startID string, limit int, listOrder pttdb.ListOrder) ([]*pkgservice.Member, error)

func (*PrivateAPI) GetMemberOplogList

func (api *PrivateAPI) GetMemberOplogList(entityID string, logID string, limit int, listOrder pttdb.ListOrder) ([]*pkgservice.MemberOplog, error)

func (*PrivateAPI) GetMemberOplogMerkleNodeList

func (api *PrivateAPI) GetMemberOplogMerkleNodeList(entityID string, level uint8, startKey []byte, limit int, listOrder pttdb.ListOrder) ([]*pkgservice.BackendMerkleNode, error)

func (*PrivateAPI) GetMessageBlockList

func (api *PrivateAPI) GetMessageBlockList(entityID string, messageID string, dummy0 string, dummy1 pkgservice.ContentType, dummy2 uint32, limit uint32) ([]*BackendMessageBlock, error)

func (*PrivateAPI) GetMessageList

func (api *PrivateAPI) GetMessageList(entityID string, startingMessageID string, limit int, listOrder pttdb.ListOrder) ([]*BackendGetMessage, error)

func (*PrivateAPI) GetMyMemberLog

func (api *PrivateAPI) GetMyMemberLog(entityID string) (*pkgservice.BaseOplog, error)

func (*PrivateAPI) GetOpKeyInfos

func (api *PrivateAPI) GetOpKeyInfos(entityID string) ([]*pkgservice.KeyInfo, error)

func (*PrivateAPI) GetOpKeyInfosFromDB

func (api *PrivateAPI) GetOpKeyInfosFromDB(entityID string) ([]*pkgservice.KeyInfo, error)

func (*PrivateAPI) GetOpKeyOplogList

func (api *PrivateAPI) GetOpKeyOplogList(entityID string, logID string, limit int, listOrder pttdb.ListOrder) ([]*pkgservice.OpKeyOplog, error)

func (*PrivateAPI) GetPeers

func (api *PrivateAPI) GetPeers(entityID string) ([]*pkgservice.BackendPeer, error)

func (*PrivateAPI) GetPendingFriendOplogInternalList

func (api *PrivateAPI) GetPendingFriendOplogInternalList(entityID string, logID string, limit int, listOrder pttdb.ListOrder) ([]*FriendOplog, error)

func (*PrivateAPI) GetPendingFriendOplogMasterList

func (api *PrivateAPI) GetPendingFriendOplogMasterList(entityID string, logID string, limit int, listOrder pttdb.ListOrder) ([]*FriendOplog, error)

func (*PrivateAPI) GetPendingMasterOplogInternalList

func (api *PrivateAPI) GetPendingMasterOplogInternalList(entityID string, logID string, limit int, listOrder pttdb.ListOrder) ([]*pkgservice.MasterOplog, error)

func (*PrivateAPI) GetPendingMasterOplogMasterList

func (api *PrivateAPI) GetPendingMasterOplogMasterList(entityID string, logID string, limit int, listOrder pttdb.ListOrder) ([]*pkgservice.MasterOplog, error)

func (*PrivateAPI) GetPendingMemberOplogInternalList

func (api *PrivateAPI) GetPendingMemberOplogInternalList(entityID string, logID string, limit int, listOrder pttdb.ListOrder) ([]*pkgservice.MemberOplog, error)

func (*PrivateAPI) GetPendingMemberOplogMasterList

func (api *PrivateAPI) GetPendingMemberOplogMasterList(entityID string, logID string, limit int, listOrder pttdb.ListOrder) ([]*pkgservice.MemberOplog, error)

func (*PrivateAPI) GetPendingOpKeyOplogInternalList

func (api *PrivateAPI) GetPendingOpKeyOplogInternalList(entityID string, logID string, limit int, listOrder pttdb.ListOrder) ([]*pkgservice.OpKeyOplog, error)

func (*PrivateAPI) GetPendingOpKeyOplogMasterList

func (api *PrivateAPI) GetPendingOpKeyOplogMasterList(entityID string, logID string, limit int, listOrder pttdb.ListOrder) ([]*pkgservice.OpKeyOplog, error)

func (*PrivateAPI) GetRawFriend

func (api *PrivateAPI) GetRawFriend(entityID string) (*Friend, error)

func (*PrivateAPI) MarkFriendListSeen

func (api *PrivateAPI) MarkFriendListSeen() (types.Timestamp, error)

func (*PrivateAPI) MarkFriendSeen

func (api *PrivateAPI) MarkFriendSeen(entityID string) (types.Timestamp, error)

func (*PrivateAPI) RevokeOpKey

func (api *PrivateAPI) RevokeOpKey(entityID string, keyID string, myKey string) (bool, error)

func (*PrivateAPI) ShowValidateKey

func (api *PrivateAPI) ShowValidateKey() (*types.PttID, error)

func (*PrivateAPI) ValidateValidateKey

func (api *PrivateAPI) ValidateValidateKey(key string) (bool, error)

type ProcessFriendInfo

type ProcessFriendInfo struct {
	CreateMessageInfo map[types.PttID]*pkgservice.BaseOplog

	CreateMediaInfo map[types.PttID]*pkgservice.BaseOplog

	BlockInfo map[types.PttID]*pkgservice.BaseOplog

	FriendInfo map[types.PttID]*pkgservice.BaseOplog
}

func NewProcessFriendInfo

func NewProcessFriendInfo() *ProcessFriendInfo

type ProtocolManager

type ProtocolManager struct {
	*pkgservice.BaseProtocolManager
	// contains filtered or unexported fields
}

func NewProtocolManager

func NewProtocolManager(f *Friend, ptt pkgservice.Ptt, svc pkgservice.Service) (*ProtocolManager, error)

func (*ProtocolManager) ApproveJoinFriend

func (pm *ProtocolManager) ApproveJoinFriend(joinEntity *pkgservice.JoinEntity, keyInfo *pkgservice.KeyInfo, peer *pkgservice.PttPeer) (*pkgservice.KeyInfo, interface{}, error)

func (*ProtocolManager) BroadcastFriendOplog

func (pm *ProtocolManager) BroadcastFriendOplog(oplog *FriendOplog) error

func (*ProtocolManager) BroadcastFriendOplogs

func (pm *ProtocolManager) BroadcastFriendOplogs(opKeyLogs []*FriendOplog) error

func (*ProtocolManager) CleanObject

func (pm *ProtocolManager) CleanObject() error

func (*ProtocolManager) CreateFriendOplog

func (pm *ProtocolManager) CreateFriendOplog(objID *types.PttID, ts types.Timestamp, op pkgservice.OpType, data interface{}) (*FriendOplog, error)

func (*ProtocolManager) CreateMessage

func (pm *ProtocolManager) CreateMessage(msg [][]byte, mediaIDs []*types.PttID) (*Message, error)

func (*ProtocolManager) DeleteFriend

func (pm *ProtocolManager) DeleteFriend() error

func (*ProtocolManager) Fix141MasterOplog

func (pm *ProtocolManager) Fix141MasterOplog() error

func (*ProtocolManager) ForceSyncFriendMerkle

func (pm *ProtocolManager) ForceSyncFriendMerkle() (bool, error)

func (*ProtocolManager) GetFriendOplogList

func (pm *ProtocolManager) GetFriendOplogList(logID *types.PttID, limit int, listOrder pttdb.ListOrder, status types.Status) ([]*FriendOplog, error)

GetFriendOplogList gets the FriendOplogs.

func (*ProtocolManager) GetFriendOplogMerkleNodeList

func (pm *ProtocolManager) GetFriendOplogMerkleNodeList(level pkgservice.MerkleTreeLevel, startKey []byte, limit int, listOrder pttdb.ListOrder) ([]*pkgservice.MerkleNode, error)

func (*ProtocolManager) GetMessageBlockList

func (pm *ProtocolManager) GetMessageBlockList(msgID *types.PttID, limit uint32) (*Message, []*pkgservice.ContentBlock, error)

func (*ProtocolManager) GetMessageList

func (pm *ProtocolManager) GetMessageList(startID *types.PttID, limit int, listOrder pttdb.ListOrder, isLocked bool) ([]*Message, error)

func (*ProtocolManager) GetUserNodeID

func (pm *ProtocolManager) GetUserNodeID() (*discover.NodeID, error)

func (*ProtocolManager) HandleAddFriendOplog

func (pm *ProtocolManager) HandleAddFriendOplog(dataBytes []byte, peer *pkgservice.PttPeer) error

func (*ProtocolManager) HandleAddFriendOplogs

func (pm *ProtocolManager) HandleAddFriendOplogs(dataBytes []byte, peer *pkgservice.PttPeer) error

func (*ProtocolManager) HandleAddPendingFriendOplog

func (pm *ProtocolManager) HandleAddPendingFriendOplog(dataBytes []byte, peer *pkgservice.PttPeer) error

func (*ProtocolManager) HandleAddPendingFriendOplogs

func (pm *ProtocolManager) HandleAddPendingFriendOplogs(dataBytes []byte, peer *pkgservice.PttPeer) error

func (*ProtocolManager) HandleFailedFriendOplog

func (pm *ProtocolManager) HandleFailedFriendOplog(oplog *pkgservice.BaseOplog) (err error)

func (*ProtocolManager) HandleFailedValidFriendOplog

func (pm *ProtocolManager) HandleFailedValidFriendOplog(oplog *pkgservice.BaseOplog, processInfo pkgservice.ProcessInfo) (err error)

func (*ProtocolManager) HandleForceSyncFriendOplog

func (pm *ProtocolManager) HandleForceSyncFriendOplog(dataBytes []byte, peer *pkgservice.PttPeer) error

func (*ProtocolManager) HandleForceSyncFriendOplogAck

func (pm *ProtocolManager) HandleForceSyncFriendOplogAck(dataBytes []byte, peer *pkgservice.PttPeer) error

func (*ProtocolManager) HandleForceSyncFriendOplogByMerkle

func (pm *ProtocolManager) HandleForceSyncFriendOplogByMerkle(dataBytes []byte, peer *pkgservice.PttPeer) error

func (*ProtocolManager) HandleForceSyncFriendOplogByMerkleAck

func (pm *ProtocolManager) HandleForceSyncFriendOplogByMerkleAck(dataBytes []byte, peer *pkgservice.PttPeer) error

func (*ProtocolManager) HandleForceSyncFriendOplogByOplogAck

func (pm *ProtocolManager) HandleForceSyncFriendOplogByOplogAck(dataBytes []byte, peer *pkgservice.PttPeer) error

func (*ProtocolManager) HandleFriendOplogs

func (pm *ProtocolManager) HandleFriendOplogs(oplogs []*pkgservice.BaseOplog, peer *pkgservice.PttPeer, isUpdateSyncTime bool) error

func (*ProtocolManager) HandleInitFriendInfo

func (pm *ProtocolManager) HandleInitFriendInfo(dataBytes []byte, peer *pkgservice.PttPeer) error

func (*ProtocolManager) HandleInitFriendInfoAck

func (pm *ProtocolManager) HandleInitFriendInfoAck(dataBytes []byte, peer *pkgservice.PttPeer) error

func (*ProtocolManager) HandleInitFriendInfoAckCore

func (pm *ProtocolManager) HandleInitFriendInfoAckCore(
	initFriendInfoAck *InitFriendInfoAck,
	oplog *pkgservice.BaseOplog,

	peer *pkgservice.PttPeer,

	isNew bool,
	isLocked bool,
) error

func (*ProtocolManager) HandleMessage

func (pm *ProtocolManager) HandleMessage(op pkgservice.OpType, dataBytes []byte, peer *pkgservice.PttPeer) error

func (*ProtocolManager) HandleNonRegisteredMessage

func (pm *ProtocolManager) HandleNonRegisteredMessage(op pkgservice.OpType, dataBytes []byte, peer *pkgservice.PttPeer) error

func (*ProtocolManager) HandlePendingFriendOplogs

func (pm *ProtocolManager) HandlePendingFriendOplogs(oplogs []*pkgservice.BaseOplog, peer *pkgservice.PttPeer) error

func (*ProtocolManager) HandleSyncCreateMessage

func (pm *ProtocolManager) HandleSyncCreateMessage(dataBytes []byte, peer *pkgservice.PttPeer, syncAckMsg pkgservice.OpType) error

func (*ProtocolManager) HandleSyncCreateMessageAck

func (pm *ProtocolManager) HandleSyncCreateMessageAck(dataBytes []byte, peer *pkgservice.PttPeer) error

func (*ProtocolManager) HandleSyncCreateMessageBlockAck

func (pm *ProtocolManager) HandleSyncCreateMessageBlockAck(dataBytes []byte, peer *pkgservice.PttPeer) error

func (*ProtocolManager) HandleSyncFriendOplog

func (pm *ProtocolManager) HandleSyncFriendOplog(dataBytes []byte, peer *pkgservice.PttPeer) error

func (*ProtocolManager) HandleSyncFriendOplogAck

func (pm *ProtocolManager) HandleSyncFriendOplogAck(dataBytes []byte, peer *pkgservice.PttPeer) error

func (*ProtocolManager) HandleSyncFriendOplogInvalid

func (pm *ProtocolManager) HandleSyncFriendOplogInvalid(dataBytes []byte, peer *pkgservice.PttPeer) error

func (*ProtocolManager) HandleSyncMessageBlock

func (pm *ProtocolManager) HandleSyncMessageBlock(dataBytes []byte, peer *pkgservice.PttPeer) error

func (*ProtocolManager) HandleSyncNewFriendOplog

func (pm *ProtocolManager) HandleSyncNewFriendOplog(dataBytes []byte, peer *pkgservice.PttPeer) error

func (*ProtocolManager) HandleSyncNewFriendOplogAck

func (pm *ProtocolManager) HandleSyncNewFriendOplogAck(dataBytes []byte, peer *pkgservice.PttPeer) error

func (*ProtocolManager) HandleSyncPendingFriendOplog

func (pm *ProtocolManager) HandleSyncPendingFriendOplog(dataBytes []byte, peer *pkgservice.PttPeer) error

func (*ProtocolManager) HandleSyncPendingFriendOplogAck

func (pm *ProtocolManager) HandleSyncPendingFriendOplogAck(dataBytes []byte, peer *pkgservice.PttPeer) error

func (*ProtocolManager) InitFriendInfo

func (pm *ProtocolManager) InitFriendInfo(peer *pkgservice.PttPeer) error

func (*ProtocolManager) InitFriendInfoAck

func (pm *ProtocolManager) InitFriendInfoAck(peer *pkgservice.PttPeer) error

func (*ProtocolManager) InitFriendInfoAckCore

func (pm *ProtocolManager) InitFriendInfoAckCore(peer *pkgservice.PttPeer) (*InitFriendInfoAck, error)

func (*ProtocolManager) LoadPeers

func (pm *ProtocolManager) LoadPeers() error

func (*ProtocolManager) NewFriendOplog

func (pm *ProtocolManager) NewFriendOplog(objID *types.PttID, op pkgservice.OpType, opData pkgservice.OpData) (pkgservice.Oplog, error)

func (*ProtocolManager) NewFriendOplogWithTS

func (pm *ProtocolManager) NewFriendOplogWithTS(objID *types.PttID, ts types.Timestamp, op pkgservice.OpType, opData pkgservice.OpData) (pkgservice.Oplog, error)

func (*ProtocolManager) NewMessage

func (*ProtocolManager) SaveLastSeen

func (pm *ProtocolManager) SaveLastSeen(ts types.Timestamp) (types.Timestamp, error)

func (*ProtocolManager) SetFriendDB

func (pm *ProtocolManager) SetFriendDB(oplog *pkgservice.BaseOplog)

func (*ProtocolManager) SetFriendOplogIsSync

func (pm *ProtocolManager) SetFriendOplogIsSync(oplog *FriendOplog, isBroadcast bool) (bool, error)

func (*ProtocolManager) SetMessageDB

func (pm *ProtocolManager) SetMessageDB(m *Message)

func (*ProtocolManager) SetNewestFriendOplog

func (pm *ProtocolManager) SetNewestFriendOplog(oplog *pkgservice.BaseOplog) (err error)

func (*ProtocolManager) Start

func (pm *ProtocolManager) Start() error

func (*ProtocolManager) Stop

func (pm *ProtocolManager) Stop() error

func (*ProtocolManager) Sync

func (pm *ProtocolManager) Sync(peer *pkgservice.PttPeer) error

func (*ProtocolManager) SyncFriendOplog

func (pm *ProtocolManager) SyncFriendOplog(peer *pkgservice.PttPeer) error

func (*ProtocolManager) SyncMessage

func (pm *ProtocolManager) SyncMessage(op pkgservice.OpType, syncIDs []*pkgservice.SyncID, peer *pkgservice.PttPeer) error

func (*ProtocolManager) SyncMessageBlock

func (pm *ProtocolManager) SyncMessageBlock(op pkgservice.OpType, syncBlockIDs []*pkgservice.SyncBlockID, peer *pkgservice.PttPeer) error

func (*ProtocolManager) SyncPendingFriendOplog

func (pm *ProtocolManager) SyncPendingFriendOplog(peer *pkgservice.PttPeer) error

type ServiceProtocolManager

type ServiceProtocolManager struct {
	*pkgservice.BaseServiceProtocolManager
}

func NewServiceProtocolManager

func NewServiceProtocolManager(ptt pkgservice.Ptt, service pkgservice.Service) (*ServiceProtocolManager, error)

func (*ServiceProtocolManager) CreateFriend

func (spm *ServiceProtocolManager) CreateFriend(friendID *types.PttID) (*Friend, error)

func (*ServiceProtocolManager) GetFriendByFriendID

func (spm *ServiceProtocolManager) GetFriendByFriendID(friendID *types.PttID) (*Friend, error)

func (*ServiceProtocolManager) GetFriendEntityByFriendID

func (spm *ServiceProtocolManager) GetFriendEntityByFriendID(friendID *types.PttID) (*Friend, error)

func (*ServiceProtocolManager) GetFriendList

func (spm *ServiceProtocolManager) GetFriendList(startingFriendID *types.PttID, limit int, listOrder pttdb.ListOrder) ([]*Friend, error)

func (*ServiceProtocolManager) GetFriendListByMsgCreateTS

func (spm *ServiceProtocolManager) GetFriendListByMsgCreateTS(startingTS types.Timestamp, limit int, listOrder pttdb.ListOrder) ([]*Friend, error)

func (*ServiceProtocolManager) NewEmptyEntity

func (spm *ServiceProtocolManager) NewEmptyEntity() pkgservice.Entity

func (*ServiceProtocolManager) NewFriend

func (*ServiceProtocolManager) NewFriendOplogWithTS

func (spm *ServiceProtocolManager) NewFriendOplogWithTS(entityID *types.PttID, ts types.Timestamp, op pkgservice.OpType, opData pkgservice.OpData) (pkgservice.Oplog, error)

type SyncMessageAck

type SyncMessageAck struct {
	Objs []*Message `json:"o"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL