Refactor checkpoint methods

This commit is contained in:
Sumner Evans 2021-11-17 14:33:25 -07:00
commit 427497a245
No known key found for this signature in database
GPG key ID: 8904527AB50022FD
2 changed files with 25 additions and 17 deletions

View file

@ -211,23 +211,18 @@ func (as *AppService) handleEvents(evts []*event.Event, defaultTypeClass event.T
}
}
func (as *AppService) sendMessageSendCheckpoint(evt *event.Event) error {
func (as *AppService) sendMessageSendCheckpoint(evt *event.Event) {
endpoint := as.MessageSendCheckpointEndpoint
if endpoint == "" {
return nil
return
}
if _, ok := GetCheckpointTypes()[evt.Type]; !ok {
return nil
return
}
as.Log.Debugfln("Sending message send checkpoint for %s to API server", evt.ID)
checkpoint := NewMessageSendCheckpoint(evt.ID, evt.RoomID, StepBridge, StatusSuccesss, evt.Type)
if evt.Type == event.EventMessage {
checkpoint.MessageType = evt.Content.AsMessage().MsgType
}
return checkpoint.Send(as)
as.SendMessageSendCheckpoint(evt, StepBridge)
}
// GetRoom handles a /rooms GET call from the homeserver.

View file

@ -59,22 +59,35 @@ type MessageSendCheckpoint struct {
Info string `json:"info"`
}
func NewMessageSendCheckpoint(eventID id.EventID, roomID id.RoomID, step MessageSendCheckpointStep, status MessageSendCheckpointStatus, eventType event.Type) *MessageSendCheckpoint {
return &MessageSendCheckpoint{
EventID: eventID,
RoomID: roomID,
func NewMessageSendCheckpoint(evt *event.Event, step MessageSendCheckpointStep, status MessageSendCheckpointStatus) *MessageSendCheckpoint {
checkpoint := MessageSendCheckpoint{
EventID: evt.ID,
RoomID: evt.RoomID,
Step: step,
Timestamp: time.Now(),
Status: status,
EventType: eventType,
EventType: evt.Type,
ReportedBy: ReportedByBridge,
}
if evt.Type == event.EventMessage {
checkpoint.MessageType = evt.Content.AsMessage().MsgType
}
return &checkpoint
}
func NewErrorMessageSendCheckpoint(eventID id.EventID, roomID id.RoomID, step MessageSendCheckpointStep, eventType event.Type, err error) *MessageSendCheckpoint {
checkpoint := NewMessageSendCheckpoint(eventID, roomID, step, StatusPermFailure, eventType)
func (as *AppService) SendMessageSendCheckpoint(evt *event.Event, step MessageSendCheckpointStep) {
checkpoint := NewMessageSendCheckpoint(evt, step, StatusSuccesss)
go checkpoint.Send(as)
}
func (as *AppService) SendErrorMessageSendCheckpoint(evt *event.Event, step MessageSendCheckpointStep, err error, permanent bool) {
status := StatusWillRetry
if permanent {
status = StatusPermFailure
}
checkpoint := NewMessageSendCheckpoint(evt, step, status)
checkpoint.Info = err.Error()
return checkpoint
go checkpoint.Send(as)
}
func GetCheckpointTypes() map[event.Type]interface{} {