对接
This commit is contained in:
@@ -62,6 +62,11 @@ func (r *streamRepo) RegisterPublisher(_ context.Context, streamID string, userI
|
||||
}
|
||||
state.stream.PublisherID = userID
|
||||
state.stream.PublisherOnline = true
|
||||
// A new broadcast starts with a fresh in-room like counter. Keeping the
|
||||
// stream state object is useful when viewers connected before the publisher,
|
||||
// but likes must never leak into the next broadcast session.
|
||||
state.stream.LikeCount = 0
|
||||
state.stream.StartedAt = time.Now()
|
||||
state.stream.UpdatedAt = time.Now()
|
||||
return clone(state.stream), nil
|
||||
}
|
||||
@@ -75,6 +80,7 @@ func (r *streamRepo) UnregisterPublisher(_ context.Context, streamID string, use
|
||||
}
|
||||
state.stream.PublisherID = 0
|
||||
state.stream.PublisherOnline = false
|
||||
state.stream.StartedAt = time.Time{}
|
||||
state.stream.UpdatedAt = time.Now()
|
||||
if len(state.users) == 0 {
|
||||
delete(r.streams, streamID)
|
||||
@@ -121,6 +127,19 @@ func (r *streamRepo) UnregisterSubscriber(_ context.Context, streamID string, us
|
||||
return nil
|
||||
}
|
||||
|
||||
func (r *streamRepo) Like(_ context.Context, streamID string) (int, error) {
|
||||
r.mu.Lock()
|
||||
defer r.mu.Unlock()
|
||||
state := r.streams[streamID]
|
||||
if state == nil {
|
||||
state = &streamState{stream: &bizlive.Stream{StreamID: streamID}, users: make(map[uint]struct{})}
|
||||
r.streams[streamID] = state
|
||||
}
|
||||
state.stream.LikeCount++
|
||||
state.stream.UpdatedAt = time.Now()
|
||||
return state.stream.LikeCount, nil
|
||||
}
|
||||
|
||||
func clone(stream *bizlive.Stream) *bizlive.Stream {
|
||||
if stream == nil {
|
||||
return nil
|
||||
|
||||
Reference in New Issue
Block a user