in saga/sagalogs/file.go [260:332]
func parseMessage(sagaId string, scanner *bufio.Scanner) (saga.SagaMessage, error) {
switch scanner.Text() {
// Parse Start Saga Message
case saga.StartSaga.String():
if ok := scanner.Scan(); !ok {
return saga.SagaMessage{}, saga.NewCorruptedSagaLogError(
sagaId,
fmt.Sprintf("Error Parsing SagaLog expected Data after StartSaga message. Error: %v",
createUnexpectedScanEndMsg(scanner)),
)
}
dataFileName := scanner.Text()
data, err := ioutil.ReadFile(dataFileName)
if err != nil {
return saga.SagaMessage{},
saga.NewCorruptedSagaLogError(
sagaId,
fmt.Sprintf("Error Reading DataFile %v, Error: %v", dataFileName, err),
)
}
return saga.MakeStartSagaMessage(sagaId, data), nil
// Parse End Saga Message
case saga.EndSaga.String():
return saga.MakeEndSagaMessage(sagaId), nil
// Parse Abort Saga Message
case saga.AbortSaga.String():
return saga.MakeAbortSagaMessage(sagaId), nil
// Parse Start Task Message
case saga.StartTask.String():
taskId, data, err := parseTask(sagaId, scanner)
if err != nil {
return saga.SagaMessage{}, err
}
return saga.MakeStartTaskMessage(sagaId, taskId, data), nil
// Parse End Task Message
case saga.EndTask.String():
taskId, data, err := parseTask(sagaId, scanner)
if err != nil {
return saga.SagaMessage{}, err
}
return saga.MakeEndTaskMessage(sagaId, taskId, data), nil
// Parse Start Comp Task Message
case saga.StartCompTask.String():
taskId, data, err := parseTask(sagaId, scanner)
if err != nil {
return saga.SagaMessage{}, err
}
return saga.MakeStartCompTaskMessage(sagaId, taskId, data), nil
// Parse End Comp Task Message
case saga.EndCompTask.String():
taskId, data, err := parseTask(sagaId, scanner)
if err != nil {
return saga.SagaMessage{}, err
}
return saga.MakeEndCompTaskMessage(sagaId, taskId, data), nil
// Unrecognized Message
default:
return saga.SagaMessage{}, saga.NewCorruptedSagaLogError(
sagaId,
fmt.Sprintf("Error Parsing SagaLog unrecognized message type, %v", scanner.Text()),
)
}
}