add indexed acknowledgements
This commit is contained in:
parent
07c293eb2c
commit
c340167b35
|
@ -94,6 +94,12 @@ const (
|
||||||
// RemotePeer: The peer associated with the acknowledgement
|
// RemotePeer: The peer associated with the acknowledgement
|
||||||
PeerAcknowledgement = Type("PeerAcknowledgement")
|
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:
|
// attributes:
|
||||||
// RemotePeer: [eg "chpr7qm6op5vfcg2pi4vllco3h6aa7exexc4rqwnlupqhoogx2zgd6qd"]
|
// RemotePeer: [eg "chpr7qm6op5vfcg2pi4vllco3h6aa7exexc4rqwnlupqhoogx2zgd6qd"]
|
||||||
// Error: string describing the error
|
// Error: string describing the error
|
||||||
|
@ -265,6 +271,7 @@ const (
|
||||||
Status = Field("Status")
|
Status = Field("Status")
|
||||||
EventID = Field("EventID")
|
EventID = Field("EventID")
|
||||||
EventContext = Field("EventContext")
|
EventContext = Field("EventContext")
|
||||||
|
Index = Field("Index")
|
||||||
|
|
||||||
Authorization = Field("Authorization")
|
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
|
// 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()
|
p.lock.Lock()
|
||||||
defer p.lock.Unlock()
|
defer p.lock.Unlock()
|
||||||
|
|
||||||
|
@ -207,8 +207,11 @@ func (p *Profile) AckSentMessageToPeer(onion string, eventID string) {
|
||||||
if ok {
|
if ok {
|
||||||
contact.Timeline.Messages[mIdx].Acknowledged = true
|
contact.Timeline.Messages[mIdx].Acknowledged = true
|
||||||
delete(contact.UnacknowledgedMessages, eventID)
|
delete(contact.UnacknowledgedMessages, eventID)
|
||||||
|
return mIdx
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return -1
|
||||||
}
|
}
|
||||||
|
|
||||||
// AddGroupSentMessageError searches matching groups for the message by sig and marks it as an error
|
// 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:
|
case event.PeerAcknowledgement:
|
||||||
cp.mutex.Lock()
|
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()
|
cp.mutex.Unlock()
|
||||||
|
|
||||||
case event.SendMessageToGroupError:
|
case event.SendMessageToGroupError:
|
||||||
|
|
Loading…
Reference in New Issue