func parseMessage()

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()),
		)
	}
}