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 }