@@ -11,6 +11,10 @@ import (
11
11
"github.com/xaionaro-go/streamctl/pkg/streamd/api"
12
12
)
13
13
14
+ const (
15
+ debugSendArchiveMessagesAsLive = false
16
+ )
17
+
14
18
type ChatMessageStorage interface {
15
19
AddMessage (context.Context , api.ChatMessage ) error
16
20
RemoveMessage (context.Context , streamcontrol.ChatMessageID ) error
@@ -45,6 +49,7 @@ func (d *StreamD) startListeningForChatMessages(
45
49
}
46
50
msg := api.ChatMessage {
47
51
ChatMessage : ev ,
52
+ IsLive : true ,
48
53
Platform : platName ,
49
54
}
50
55
if err := d .ChatMessagesStorage .AddMessage (ctx , msg ); err != nil {
@@ -103,17 +108,40 @@ func (d *StreamD) SubscribeToChatMessages(
103
108
ctx context.Context ,
104
109
since time.Time ,
105
110
limit uint64 ,
106
- ) (<- chan api.ChatMessage , error ) {
111
+ ) (_ret <- chan api.ChatMessage , _err error ) {
112
+ logger .Tracef (ctx , "SubscribeToChatMessages(ctx, %v, %v)" , since , limit )
113
+ defer func () { logger .Tracef (ctx , "/SubscribeToChatMessages(ctx, %v, %v): %p %v" , since , limit , _ret , _err ) }()
114
+
107
115
return eventSubToChan (
108
116
ctx , d ,
109
117
func (ctx context.Context , outCh chan api.ChatMessage ) {
118
+ logger .Tracef (ctx , "backfilling the channel" )
119
+ defer func () { logger .Tracef (ctx , "/backfilling the channel" ) }()
110
120
msgs , err := d .ChatMessagesStorage .GetMessagesSince (ctx , since , uint (limit ))
111
121
if err != nil {
112
122
logger .Errorf (ctx , "unable to get the messages from the storage: %v" , err )
113
123
return
114
124
}
115
125
for _ , msg := range msgs {
116
- outCh <- msg
126
+ msg .IsLive = false
127
+ if debugSendArchiveMessagesAsLive {
128
+ msg .IsLive = true
129
+ }
130
+ if ! func () (_ret bool ) {
131
+ defer func () {
132
+ if recover () != nil {
133
+ logger .Debugf (ctx , "the channel is closed" )
134
+ _ret = false
135
+ }
136
+ }()
137
+ outCh <- msg
138
+ return true
139
+ }() {
140
+ break
141
+ }
142
+ if debugSendArchiveMessagesAsLive {
143
+ time .Sleep (5 * time .Second )
144
+ }
117
145
}
118
146
},
119
147
)
0 commit comments