Skip to content

Commit

Permalink
Added a method to enterClient with id, clientID and data
Browse files Browse the repository at this point in the history
  • Loading branch information
sacOO7 committed Jan 12, 2024
1 parent 07ab32b commit 115b797
Showing 1 changed file with 20 additions and 1 deletion.
21 changes: 20 additions & 1 deletion ably/realtime_presence.go
Original file line number Diff line number Diff line change
Expand Up @@ -146,11 +146,12 @@ func syncSerial(msg *protocolMessage) (noChannelSerial bool, syncSequenceId stri
return false, syncSequenceId, syncCursor
}

// for every attach local members will be entered
func (pres *RealtimePresence) enterMembers(internalMembers []*PresenceMessage) {
for _, member := range internalMembers {
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Minute)
// RTP17g
err := pres.EnterClient(ctx, member.ClientID, member.Data)
err := pres.enterClientWithId(ctx, member.ID, member.ClientID, member.Data)
// RTP17e
if err != nil {
pres.channel.log().Errorf("Error for internal member presence enter with id %v, clientId %v, err %v", member.ID, member.ClientID, err)
Expand Down Expand Up @@ -542,6 +543,24 @@ func (pres *RealtimePresence) EnterClient(ctx context.Context, clientID string,
return res.Wait(ctx)
}

func (pres *RealtimePresence) enterClientWithId(ctx context.Context, id string, clientID string, data interface{}) error {
pres.mtx.Lock()
pres.data = data
pres.state = PresenceActionEnter
pres.mtx.Unlock()
msg := PresenceMessage{
Action: PresenceActionEnter,
}
msg.ID = id
msg.Data = data
msg.ClientID = clientID
res, err := pres.send(&msg)
if err != nil {
return err
}
return res.Wait(ctx)
}

func nonnil(a, b interface{}) interface{} {
if a != nil {
return a
Expand Down

0 comments on commit 115b797

Please sign in to comment.