forked from keybase/client
-
Notifications
You must be signed in to change notification settings - Fork 0
/
interfaces.go
112 lines (94 loc) · 4.79 KB
/
interfaces.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
package types
import (
"github.com/keybase/client/go/protocol/chat1"
"github.com/keybase/client/go/protocol/gregor1"
"github.com/keybase/client/go/protocol/keybase1"
context "golang.org/x/net/context"
)
type Offlinable interface {
IsOffline() bool
Connected(ctx context.Context)
Disconnected(ctx context.Context)
}
type Resumable interface {
Start(ctx context.Context, uid gregor1.UID)
Stop(ctx context.Context) chan struct{}
}
type TLFInfoSource interface {
Lookup(ctx context.Context, tlfName string, vis chat1.TLFVisibility) (*TLFInfo, error)
CryptKeys(ctx context.Context, tlfName string) (keybase1.GetTLFCryptKeysRes, error)
PublicCanonicalTLFNameAndID(ctx context.Context, tlfName string) (keybase1.CanonicalTLFNameAndIDWithBreaks, error)
CompleteAndCanonicalizePrivateTlfName(ctx context.Context, tlfName string) (res keybase1.CanonicalTLFNameAndIDWithBreaks, err error)
}
type ConversationSource interface {
Offlinable
Push(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID,
msg chat1.MessageBoxed) (chat1.MessageUnboxed, bool, error)
Pull(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, query *chat1.GetThreadQuery,
pagination *chat1.Pagination) (chat1.ThreadView, []*chat1.RateLimit, error)
PullLocalOnly(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID,
query *chat1.GetThreadQuery, p *chat1.Pagination) (chat1.ThreadView, error)
GetMessages(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, msgIDs []chat1.MessageID, finalizeInfo *chat1.ConversationFinalizeInfo) ([]chat1.MessageUnboxed, error)
GetMessagesWithRemotes(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID,
msgs []chat1.MessageBoxed, finalizeInfo *chat1.ConversationFinalizeInfo) ([]chat1.MessageUnboxed, error)
Clear(convID chat1.ConversationID, uid gregor1.UID) error
TransformSupersedes(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, msgs []chat1.MessageUnboxed, finalizeInfo *chat1.ConversationFinalizeInfo) ([]chat1.MessageUnboxed, error)
SetRemoteInterface(func() chat1.RemoteInterface)
SetTLFInfoSource(tlfInfoSource TLFInfoSource)
}
type MessageDeliverer interface {
Offlinable
Resumable
Queue(ctx context.Context, convID chat1.ConversationID, msg chat1.MessagePlaintext,
identifyBehavior keybase1.TLFIdentifyBehavior) (chat1.OutboxRecord, error)
ForceDeliverLoop(ctx context.Context)
}
type ChatLocalizer interface {
Localize(ctx context.Context, uid gregor1.UID, inbox chat1.Inbox) ([]chat1.ConversationLocal, error)
Name() string
SetOffline()
}
type InboxSource interface {
Offlinable
Read(ctx context.Context, uid gregor1.UID, localizer ChatLocalizer, useLocalData bool,
query *chat1.GetInboxLocalQuery, p *chat1.Pagination) (chat1.Inbox, *chat1.RateLimit, error)
ReadUnverified(ctx context.Context, uid gregor1.UID, useLocalData bool,
query *chat1.GetInboxQuery, p *chat1.Pagination) (chat1.Inbox, *chat1.RateLimit, error)
NewConversation(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers,
conv chat1.Conversation) error
NewMessage(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers, convID chat1.ConversationID,
msg chat1.MessageBoxed) (*chat1.ConversationLocal, error)
ReadMessage(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers, convID chat1.ConversationID,
msgID chat1.MessageID) (*chat1.ConversationLocal, error)
SetStatus(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers, convID chat1.ConversationID,
status chat1.ConversationStatus) (*chat1.ConversationLocal, error)
TlfFinalize(ctx context.Context, uid gregor1.UID, vers chat1.InboxVers,
convIDs []chat1.ConversationID, finalizeInfo chat1.ConversationFinalizeInfo) ([]chat1.ConversationLocal, error)
SetRemoteInterface(func() chat1.RemoteInterface)
SetTLFInfoSource(tlfInfoSource TLFInfoSource)
}
type ServerCacheVersions interface {
Set(ctx context.Context, vers chat1.ServerCacheVers) error
MatchBodies(ctx context.Context, vers int) (int, error)
MatchInbox(ctx context.Context, vers int) (int, error)
Fetch(ctx context.Context) (chat1.ServerCacheVers, error)
}
type Syncer interface {
IsConnected(ctx context.Context) bool
Connected(ctx context.Context, cli chat1.RemoteInterface, uid gregor1.UID,
syncRes *chat1.SyncChatRes) error
Disconnected(ctx context.Context)
Sync(ctx context.Context, cli chat1.RemoteInterface, uid gregor1.UID,
syncRes *chat1.SyncChatRes) error
RegisterOfflinable(offlinable Offlinable)
SendChatStaleNotifications(ctx context.Context, uid gregor1.UID, convIDs []chat1.ConversationID,
immediate bool)
Shutdown()
}
type FetchRetrier interface {
Offlinable
Resumable
Failure(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, kind FetchType) error
Success(ctx context.Context, convID chat1.ConversationID, uid gregor1.UID, kind FetchType) error
Force(ctx context.Context)
}