本文整理汇总了Golang中github.com/FactomProject/factomd/common/interfaces.IState类的典型用法代码示例。如果您正苦于以下问题:Golang IState类的具体用法?Golang IState怎么用?Golang IState使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了IState类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: SigTally
func (m *FullServerFault) SigTally(state interfaces.IState) int {
validSigCount := 0
// Check main signature
bytes, err := m.MarshalForSignature()
if err != nil {
return 0
}
sig := m.Signature.GetSignature()
sfSigned, err := state.VerifyAuthoritySignature(bytes, sig, m.DBHeight)
if err != nil {
return 0
}
if sfSigned < 1 {
return 0
}
cb, err := m.MarshalCore()
if err != nil {
return 0
}
for _, fedSig := range m.SignatureList.List {
check, err := state.VerifyAuthoritySignature(cb, fedSig.GetSignature(), m.DBHeight)
if err == nil && check == 1 {
validSigCount++
}
}
return validSigCount
}
开发者ID:FactomProject,项目名称:factomd,代码行数:27,代码来源:fullServerFault.go
示例2: HandleV2FactoidSubmit
func HandleV2FactoidSubmit(state interfaces.IState, params interface{}) (interface{}, *primitives.JSONError) {
t := new(TransactionRequest)
err := MapToObject(params, t)
if err != nil {
return nil, NewInvalidParamsError()
}
msg := new(messages.FactoidTransaction)
p, err := hex.DecodeString(t.Transaction)
if err != nil {
return nil, NewUnableToDecodeTransactionError()
}
_, err = msg.UnmarshalTransData(p)
if err != nil {
return nil, NewUnableToDecodeTransactionError()
}
state.IncFCTSubmits()
state.APIQueue() <- msg
resp := new(FactoidSubmitResponse)
resp.Message = "Successfully submitted the transaction"
resp.TxID = msg.Transaction.GetSigHash().String()
return resp, nil
}
开发者ID:FactomProject,项目名称:factomd,代码行数:29,代码来源:wsapiV2.go
示例3: PrtMsgs
func (m *MsgLog) PrtMsgs(state interfaces.IState) {
m.sem.Lock()
defer m.sem.Unlock()
if len(m.MsgList) == 0 {
return
}
fmt.Println(state.String())
fmt.Println("\n-----------------------------------------------------")
for _, e := range m.MsgList {
if e.valid {
dirstr := "->"
if !e.out {
dirstr = "<-"
}
fmt.Print(fmt.Sprintf("**** %8s %2s %8s %10s %5v **** %s\n", e.name, dirstr, e.peer, e.where, e.valid, e.msg.String()))
}
}
now := state.GetTimestamp()
m.last = now
m.msgCnt += len(m.MsgList) // Keep my counts
m.msgCntp += len(m.MsgList)
m.MsgList = m.MsgList[0:0] // Once printed, clear the list
fmt.Println(fmt.Sprintf("*** %42s **** ", fmt.Sprintf("Length: %d Msgs/sec: T %d P %d", len(m.MsgList), m.msgPerSec, m.msgPerSecp)))
fmt.Println("\n-----------------------------------------------------")
}
开发者ID:FactomProject,项目名称:factomd,代码行数:32,代码来源:MsgLogging.go
示例4: Validate
// Validate the message, given the state. Three possible results:
// < 0 -- Message is invalid. Discard
// 0 -- Cannot tell if message is Valid
// 1 -- Message is valid
func (m *Ack) Validate(state interfaces.IState) int {
if m.authvalid {
return 1
}
// Only new acks are valid. Of course, the VMIndex has to be valid too.
msg, err := state.GetMsg(m.VMIndex, int(m.DBHeight), int(m.Height))
if err != nil || msg != nil {
return -1
}
// Check signature
bytes, err := m.MarshalForSignature()
if err != nil {
//fmt.Println("Err is not nil on Ack sig check: ", err)
return -1
}
sig := m.Signature.GetSignature()
ackSigned, err := state.VerifyAuthoritySignature(bytes, sig, m.DBHeight)
//ackSigned, err := m.VerifySignature()
if err != nil {
//fmt.Println("Err is not nil on Ack sig check: ", err)
return -1
}
if ackSigned < 1 {
return -1
}
m.authvalid = true
return 1
}
开发者ID:FactomProject,项目名称:factomd,代码行数:36,代码来源:ack.go
示例5: FollowerExecute
func (m *MissingData) FollowerExecute(state interfaces.IState) {
var dataObject interfaces.BinaryMarshallable
//var dataHash interfaces.IHash
rawObject, dataType, err := state.LoadDataByHash(m.RequestHash)
if rawObject != nil && err == nil { // If I don't have this message, ignore.
switch dataType {
case 0: // DataType = entry
dataObject = rawObject.(interfaces.IEBEntry)
//dataHash = dataObject.(interfaces.IEBEntry).GetHash()
case 1: // DataType = eblock
dataObject = rawObject.(interfaces.IEntryBlock)
//dataHash, _ = dataObject.(interfaces.IEntryBlock).Hash()
default:
return
}
msg := NewDataResponse(state, dataObject, dataType, m.RequestHash)
msg.SetOrigin(m.GetOrigin())
msg.SetNetworkOrigin(m.GetNetworkOrigin())
msg.SendOut(state, msg)
}
return
}
开发者ID:FactomProject,项目名称:factomd,代码行数:25,代码来源:missingData.go
示例6: HandleV2CommitEntry
func HandleV2CommitEntry(state interfaces.IState, params interface{}) (interface{}, *primitives.JSONError) {
commitEntryMsg := new(EntryRequest)
err := MapToObject(params, commitEntryMsg)
if err != nil {
return nil, NewInvalidParamsError()
}
commit := entryCreditBlock.NewCommitEntry()
if p, err := hex.DecodeString(commitEntryMsg.Entry); err != nil {
return nil, NewInvalidCommitEntryError()
} else {
_, err := commit.UnmarshalBinaryData(p)
if err != nil {
return nil, NewInvalidCommitEntryError()
}
}
msg := new(messages.CommitEntryMsg)
msg.CommitEntry = commit
state.APIQueue() <- msg
state.IncECommits()
resp := new(CommitEntryResponse)
resp.Message = "Entry Commit Success"
resp.TxID = commit.GetSigHash().String()
return resp, nil
}
开发者ID:FactomProject,项目名称:factomd,代码行数:28,代码来源:wsapiV2.go
示例7: HandleV2FactoidBalance
func HandleV2FactoidBalance(state interfaces.IState, params interface{}) (interface{}, *primitives.JSONError) {
fadr := new(AddressRequest)
err := MapToObject(params, fadr)
if err != nil {
return nil, NewInvalidParamsError()
}
var adr []byte
if primitives.ValidateFUserStr(fadr.Address) {
adr = primitives.ConvertUserStrToAddress(fadr.Address)
} else {
adr, err = hex.DecodeString(fadr.Address)
if err == nil && len(adr) != constants.HASH_LENGTH {
return nil, NewInvalidAddressError()
}
if err != nil {
return nil, NewInvalidAddressError()
}
}
if len(adr) != constants.HASH_LENGTH {
return nil, NewInvalidAddressError()
}
resp := new(FactoidBalanceResponse)
resp.Balance = state.GetFactoidState().GetFactoidBalance(factoid.NewAddress(adr).Fixed())
return resp, nil
}
开发者ID:FactomProject,项目名称:factomd,代码行数:29,代码来源:wsapiV2.go
示例8: Validate
// Validate the message, given the state. Three possible results:
// < 0 -- Message is invalid. Discard
// 0 -- Cannot tell if message is Valid
// 1 -- Message is valid
func (m *DBStateMsg) Validate(state interfaces.IState) int {
if m.DirectoryBlock == nil || m.AdminBlock == nil || m.FactoidBlock == nil || m.EntryCreditBlock == nil {
//We need the basic block types
return -1
}
if state.GetNetworkID() != m.DirectoryBlock.GetHeader().GetNetworkID() {
//Wrong network ID
return -1
}
dbheight := m.DirectoryBlock.GetHeader().GetDBHeight()
if dbheight != state.GetHighestCompletedBlock()+1 && dbheight != 0 {
//We only expect the next height
return -1
}
if m.DirectoryBlock.GetHeader().GetNetworkID() == constants.MAIN_NETWORK_ID {
key := constants.CheckPoints[dbheight]
if key != "" {
if key != m.DirectoryBlock.DatabasePrimaryIndex().String() {
//Key does not match checkpoint
return -1
}
}
}
return 1
}
开发者ID:FactomProject,项目名称:factomd,代码行数:33,代码来源:dbstate.go
示例9: FollowerExecute
func (m *CommitChainMsg) FollowerExecute(state interfaces.IState) error {
err := state.MatchAckFollowerExecute(m)
if err != nil {
return err
}
return nil
}
开发者ID:jjdevbiz,项目名称:factomd,代码行数:7,代码来源:commitChain.go
示例10: HandleV2RevealEntry
func HandleV2RevealEntry(state interfaces.IState, params interface{}) (interface{}, *primitives.JSONError) {
e := new(EntryRequest)
err := MapToObject(params, e)
if err != nil {
return nil, NewInvalidParamsError()
}
entry := entryBlock.NewEntry()
if p, err := hex.DecodeString(e.Entry); err != nil {
return nil, NewInvalidEntryError()
} else {
_, err := entry.UnmarshalBinaryData(p)
if err != nil {
return nil, NewInvalidEntryError()
}
}
msg := new(messages.RevealEntryMsg)
msg.Entry = entry
msg.Timestamp = state.GetTimestamp()
state.APIQueue() <- msg
resp := new(RevealEntryResponse)
resp.Message = "Entry Reveal Success"
resp.EntryHash = entry.GetHash().String()
return resp, nil
}
开发者ID:FactomProject,项目名称:factomd,代码行数:28,代码来源:wsapiV2.go
示例11: NewEntryBlockResponse
func NewEntryBlockResponse(state interfaces.IState) interfaces.IMsg {
msg := new(EntryBlockResponse)
msg.Peer2Peer = true // Always a peer2peer request.
msg.Timestamp = state.GetTimestamp()
return msg
}
开发者ID:FactomProject,项目名称:factomd,代码行数:8,代码来源:entryBlockResponse.go
示例12: NewAddServerByHashMsg
func NewAddServerByHashMsg(state interfaces.IState, serverType int, newServerHash interfaces.IHash) interfaces.IMsg {
msg := new(AddServerMsg)
msg.ServerChainID = newServerHash
msg.ServerType = serverType
msg.Timestamp = state.GetTimestamp()
return msg
}
开发者ID:FactomProject,项目名称:factomd,代码行数:8,代码来源:addServer.go
示例13: Validate
// Validate the message, given the state. Three possible results:
// < 0 -- Message is invalid. Discard
// 0 -- Cannot tell if message is Valid
// 1 -- Message is valid
func (m *FactoidTransaction) Validate(state interfaces.IState) int {
err := state.GetFactoidState().Validate(1, m.Transaction)
if err != nil {
fmt.Println(err.Error())
return -1
}
return 1
}
开发者ID:jjdevbiz,项目名称:factomd,代码行数:12,代码来源:factoidTransaction.go
示例14: Validate
func (m *RevealEntryMsg) Validate(state interfaces.IState) int {
commit, rtn := m.ValidateRTN(state)
if rtn == 1 {
// Don't lose the commit that validates the entry
state.PutCommit(m.Entry.GetHash(), commit)
}
return rtn
}
开发者ID:FactomProject,项目名称:factomd,代码行数:8,代码来源:revealEntry.go
示例15: NewAddServerMsg
func NewAddServerMsg(state interfaces.IState, serverType int) interfaces.IMsg {
msg := new(AddServerMsg)
msg.ServerChainID = state.GetIdentityChainID()
msg.ServerType = serverType
msg.Timestamp = state.GetTimestamp()
return msg
}
开发者ID:FactomProject,项目名称:factomd,代码行数:9,代码来源:addServer.go
示例16: NewRemoveServerMsg
func NewRemoveServerMsg(state interfaces.IState, chainId interfaces.IHash, serverType int) interfaces.IMsg {
msg := new(RemoveServerMsg)
msg.ServerChainID = chainId
msg.ServerType = serverType
msg.Timestamp = state.GetTimestamp()
return msg
}
开发者ID:FactomProject,项目名称:factomd,代码行数:9,代码来源:removeServer.go
示例17: btcdMain
// btcdMain is the real main function for btcd. It is necessary to work around
// the fact that deferred functions do not run when os.Exit() is called. The
// optional serverChan parameter is mainly used by the service code to be
// notified with the server once it is setup so it can gracefully stop it when
// requested from the service control manager.
//func btcdMain(serverChan chan<- *server) error {
func btcdMain(serverChan chan<- *Server, state interfaces.IState) error {
// Load configuration and parse command line. This function also
// initializes logging and configures it accordingly.
tcfg, _, err := loadConfig()
if err != nil {
return err
}
cfg = tcfg
// tweak some config options
cfg.DisableCheckpoints = true
defer backendLog.Flush()
// Show version at startup.
btcdLog.Infof("Version %s", version())
// Ensure the database is sync'd and closed on Ctrl+C.
AddInterruptHandler(func() {
btcdLog.Infof("Gracefully shutting down the database...")
state.GetDB().(interfaces.IDatabase).Close() //db.RollbackClose()
})
// Create server and start it.
server, err := newServer(cfg.Listeners, activeNetParams.Params, state)
if err != nil {
// TODO(oga) this logging could do with some beautifying.
btcdLog.Errorf("Unable to start server on %v: %v",
cfg.Listeners, err)
return err
}
AddInterruptHandler(func() {
btcdLog.Infof("Gracefully shutting down the server...")
server.Stop()
server.WaitForShutdown()
})
server.Start()
if serverChan != nil {
serverChan <- server
}
// Factom Additions BEGIN
//factomForkInit(server)
// Factom Additions END
go func() {
server.WaitForShutdown()
srvrLog.Infof("Server shutdown complete")
shutdownChannel <- struct{}{}
}()
// Wait for shutdown signal from either a graceful server stop or from
// the interrupt handler.
<-shutdownChannel
btcdLog.Info("Shutdown complete")
return nil
}
开发者ID:jjdevbiz,项目名称:factomd,代码行数:62,代码来源:btcd.go
示例18: NewDBStateMissing
func NewDBStateMissing(state interfaces.IState, dbheightStart uint32, dbheightEnd uint32) interfaces.IMsg {
msg := new(DBStateMissing)
msg.Peer2Peer = true // Always a peer2peer request.
msg.Timestamp = state.GetTimestamp()
msg.DBHeightStart = dbheightStart
msg.DBHeightEnd = dbheightEnd
return msg
}
开发者ID:FactomProject,项目名称:factomd,代码行数:10,代码来源:dbstateMissing.go
示例19: Validate
func (m *RemoveServerMsg) Validate(state interfaces.IState) int {
// Check to see if identity exists and is audit or fed server
if !state.VerifyIsAuthority(m.ServerChainID) {
//fmt.Printf("RemoveServerMsg Error: [%s] is not a server, cannot be removed\n", m.ServerChainID.String()[:8])
return -1
}
// TODO: Check valid signatures
return 1
}
开发者ID:FactomProject,项目名称:factomd,代码行数:10,代码来源:removeServer.go
示例20: Expire
// Try and Resend. Return true if we should keep the message, false if we should give up.
func (m *MessageBase) Expire(s interfaces.IState) (rtn bool) {
now := s.GetTimestamp().GetTimeMilli()
if m.expire == 0 {
m.expire = now
}
if now-m.expire > 5*60*1000 { // Keep messages for some length before giving up.
rtn = true
}
return
}
开发者ID:FactomProject,项目名称:factomd,代码行数:11,代码来源:MessageBase.go
注:本文中的github.com/FactomProject/factomd/common/interfaces.IState类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论