github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/infura/task.go (about)

     1  package infura
     2  
     3  import (
     4  	"encoding/json"
     5  
     6  	"github.com/fibonacci-chain/fbc/x/infura/types"
     7  )
     8  
     9  type TaskConst int
    10  
    11  const (
    12  	TaskStatusInvalid TaskConst = 0 + iota
    13  	TaskStatusSuccess
    14  	TaskStatusStatusFail
    15  )
    16  
    17  const (
    18  	// Phase 1 task status
    19  	TaskPhase1NextActionRestart TaskConst = 100 + iota
    20  	TaskPhase1NextActionJumpNextBlock
    21  	TaskPhase1NextActionNewTask
    22  	TaskPhase1NextActionReturnTask
    23  	TaskPhase1NextActionUnknown
    24  
    25  	// Phase 2 task status
    26  	TaskPhase2NextActionRestart TaskConst = 200 + iota
    27  	TaskPhase2NextActionJumpNextBlock
    28  )
    29  
    30  var TaskConstDesc = map[TaskConst]string{
    31  	TaskStatusInvalid:                 "STREAM_TASK_STATUS_INVALID",
    32  	TaskStatusSuccess:                 "STREAM_TASK_STATUS_SUCCESS",
    33  	TaskStatusStatusFail:              "STREAM_TASK_STATUS_FAIL",
    34  	TaskPhase1NextActionRestart:       "STREAM_TASK_PHRASE1_NEXT_ACTION_RESTART",
    35  	TaskPhase1NextActionJumpNextBlock: "STREAM_TASK_PHRASE1_NEXT_ACTION_JUMP_NEXT_BLK",
    36  	TaskPhase1NextActionNewTask:       "STREAM_TASK_PHRASE1_NEXT_ACTION_NEW_TASK",
    37  	TaskPhase1NextActionReturnTask:    "STREAM_TASK_PHRASE1_NEXT_ACTION_RERUN_TASK",
    38  	TaskPhase1NextActionUnknown:       "STREAM_TASK_PHRASE1_NEXT_ACTION_UNKNOWN",
    39  	TaskPhase2NextActionRestart:       "STREAM_TASK_PHRASE2_NEXT_ACTION_RESTART",
    40  	TaskPhase2NextActionJumpNextBlock: "STREAM_TASK_PHRASE2_NEXT_ACTION_JUMP_NEXT_BLK",
    41  }
    42  
    43  type Task struct {
    44  	Height    int64             `json:"height"`
    45  	Done      bool              `json:"done"`
    46  	UpdatedAt int64             `json:"updatedAt"`
    47  	Data      types.IStreamData `json:"-"`
    48  }
    49  
    50  func newTask(blockHeight int64, cache *Cache) *Task {
    51  	return &Task{
    52  		Height: blockHeight,
    53  		Done:   false,
    54  		Data:   getStreamData(cache),
    55  	}
    56  }
    57  
    58  func getStreamData(cache *Cache) types.IStreamData {
    59  	return types.StreamData{
    60  		TransactionReceipts: cache.GetTransactionReceipts(),
    61  		Block:               cache.GetBlock(),
    62  		Transactions:        cache.GetTransactions(),
    63  		ContractCodes:       cache.GetContractCodes(),
    64  	}
    65  }
    66  
    67  func parseTaskFromJSON(s string) (*Task, error) {
    68  	st := Task{}
    69  	e := json.Unmarshal([]byte(s), &st)
    70  	return &st, e
    71  }
    72  
    73  func (t *Task) toJSON() string {
    74  	r, err := json.Marshal(t)
    75  	if err != nil {
    76  		panic(err)
    77  	}
    78  	return string(r)
    79  }
    80  
    81  func (t *Task) GetStatus() TaskConst {
    82  	if t.Done {
    83  		return TaskStatusSuccess
    84  	}
    85  	return TaskStatusStatusFail
    86  }