本文整理匯總了Golang中github.com/FactomProject/factomd/common/interfaces.IState.FetchFactoidTransactionByHash方法的典型用法代碼示例。如果您正苦於以下問題:Golang IState.FetchFactoidTransactionByHash方法的具體用法?Golang IState.FetchFactoidTransactionByHash怎麽用?Golang IState.FetchFactoidTransactionByHash使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/FactomProject/factomd/common/interfaces.IState
的用法示例。
在下文中一共展示了IState.FetchFactoidTransactionByHash方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: HandleV2RawData
func HandleV2RawData(state interfaces.IState, params interface{}) (interface{}, *primitives.JSONError) {
hashkey := new(HashRequest)
err := MapToObject(params, hashkey)
if err != nil {
panic(reflect.TypeOf(params))
return nil, NewInvalidParamsError()
}
h, err := primitives.HexToHash(hashkey.Hash)
if err != nil {
return nil, NewInvalidHashError()
}
var block interfaces.BinaryMarshallable
var b []byte
if block, _ = state.FetchECTransactionByHash(h); block != nil {
b, _ = block.MarshalBinary()
} else if block, _ = state.FetchFactoidTransactionByHash(h); block != nil {
b, _ = block.MarshalBinary()
} else if block, _ = state.FetchEntryByHash(h); block != nil {
b, _ = block.MarshalBinary()
}
if b == nil {
dbase := state.GetAndLockDB()
defer state.UnlockDB()
// try to find the block data in db and return the first one found
if block, _ = dbase.FetchFBlock(h); block != nil {
b, _ = block.MarshalBinary()
} else if block, _ = dbase.FetchDBlock(h); block != nil {
b, _ = block.MarshalBinary()
} else if block, _ = dbase.FetchABlock(h); block != nil {
b, _ = block.MarshalBinary()
} else if block, _ = dbase.FetchEBlock(h); block != nil {
b, _ = block.MarshalBinary()
} else if block, _ = dbase.FetchECBlock(h); block != nil {
b, _ = block.MarshalBinary()
} else if block, _ = dbase.FetchFBlock(h); block != nil {
b, _ = block.MarshalBinary()
} else if block, _ = dbase.FetchEntry(h); block != nil {
b, _ = block.MarshalBinary()
} else {
return nil, NewEntryNotFoundError()
}
}
d := new(RawDataResponse)
d.Data = hex.EncodeToString(b)
return d, nil
}
示例2: HandleV2GetTranasction
func HandleV2GetTranasction(state interfaces.IState, params interface{}) (interface{}, *primitives.JSONError) {
hashkey := new(HashRequest)
err := MapToObject(params, hashkey)
if err != nil {
return nil, NewInvalidParamsError()
}
h, err := primitives.HexToHash(hashkey.Hash)
if err != nil {
return nil, NewInvalidHashError()
}
fTx, err := state.FetchFactoidTransactionByHash(h)
if err != nil {
if err.Error() != "Block not found, should not happen" {
return nil, NewInternalError()
}
}
ecTx, err := state.FetchECTransactionByHash(h)
if err != nil {
if err.Error() != "Block not found, should not happen" {
return nil, NewInternalError()
}
}
e, err := state.FetchEntryByHash(h)
if err != nil {
return nil, NewInternalError()
}
dbase := state.GetAndLockDB()
defer state.UnlockDB()
if fTx == nil {
fTx, err = dbase.FetchFactoidTransaction(h)
if err != nil {
if err.Error() != "Block not found, should not happen" {
return nil, NewInternalError()
}
}
}
if ecTx == nil {
ecTx, err = dbase.FetchECTransaction(h)
if err != nil {
if err.Error() != "Block not found, should not happen" {
return nil, NewInternalError()
}
}
}
if e == nil {
e, err = dbase.FetchEntry(h)
if err != nil {
return nil, NewInternalError()
}
}
blockHash, err := dbase.FetchIncludedIn(h)
if err != nil {
return nil, NewInternalError()
}
answer := new(TransactionResponse)
answer.ECTranasction = ecTx
answer.FactoidTransaction = fTx
answer.Entry = e
answer.IncludedInTransactionBlock = blockHash.String()
blockHash, err = dbase.FetchIncludedIn(blockHash)
if err != nil {
return nil, NewInternalError()
}
answer.IncludedInDirectoryBlock = blockHash.String()
dBlock, err := dbase.FetchDBlock(blockHash)
if err != nil {
return nil, NewInternalError()
}
answer.IncludedInDirectoryBlockHeight = int64(dBlock.GetDatabaseHeight())
return answer, nil
}