add indexed acknowledgements
This commit is contained in:
parent
07c293eb2c
commit
c340167b35
|
@ -94,6 +94,12 @@ const (
|
|||
// RemotePeer: The peer associated with the acknowledgement
|
||||
PeerAcknowledgement = Type("PeerAcknowledgement")
|
||||
|
||||
// Like PeerAcknowledgement but with message index instead of event ID
|
||||
// attributes
|
||||
// Index: The original index of the message that the peer is responding too.
|
||||
// RemotePeer: The peer associated with the acknowledgement
|
||||
IndexedAcknowledgement = Type("IndexedAcknowledgement")
|
||||
|
||||
// attributes:
|
||||
// RemotePeer: [eg "chpr7qm6op5vfcg2pi4vllco3h6aa7exexc4rqwnlupqhoogx2zgd6qd"]
|
||||
// Error: string describing the error
|
||||
|
@ -265,6 +271,7 @@ const (
|
|||
Status = Field("Status")
|
||||
EventID = Field("EventID")
|
||||
EventContext = Field("EventContext")
|
||||
Index = Field("Index")
|
||||
|
||||
Authorization = Field("Authorization")
|
||||
|
||||
|
|
|
@ -197,7 +197,7 @@ func (p *Profile) ErrorSentMessageToPeer(onion string, eventID string, error str
|
|||
}
|
||||
|
||||
// AckSentMessageToPeer sets mesage to a peer as acknowledged
|
||||
func (p *Profile) AckSentMessageToPeer(onion string, eventID string) {
|
||||
func (p *Profile) AckSentMessageToPeer(onion string, eventID string) int {
|
||||
p.lock.Lock()
|
||||
defer p.lock.Unlock()
|
||||
|
||||
|
@ -207,8 +207,11 @@ func (p *Profile) AckSentMessageToPeer(onion string, eventID string) {
|
|||
if ok {
|
||||
contact.Timeline.Messages[mIdx].Acknowledged = true
|
||||
delete(contact.UnacknowledgedMessages, eventID)
|
||||
return mIdx
|
||||
}
|
||||
}
|
||||
|
||||
return -1
|
||||
}
|
||||
|
||||
// AddGroupSentMessageError searches matching groups for the message by sig and marks it as an error
|
||||
|
|
|
@ -715,7 +715,10 @@ func (cp *cwtchPeer) eventHandler() {
|
|||
|
||||
case event.PeerAcknowledgement:
|
||||
cp.mutex.Lock()
|
||||
cp.Profile.AckSentMessageToPeer(ev.Data[event.RemotePeer], ev.Data[event.EventID])
|
||||
idx := cp.Profile.AckSentMessageToPeer(ev.Data[event.RemotePeer], ev.Data[event.EventID])
|
||||
edata := ev.Data
|
||||
edata[event.Index] = strconv.Itoa(idx)
|
||||
cp.eventBus.Publish(event.NewEvent(event.IndexedAcknowledgement, edata))
|
||||
cp.mutex.Unlock()
|
||||
|
||||
case event.SendMessageToGroupError:
|
||||
|
|
Loading…
Reference in New Issue