template.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package template
  2. import (
  3. "fmt"
  4. )
  5. type Template interface {
  6. InitDriver(parm interface{}) bool
  7. CreateAddress(parm interface{}) ([]byte, error)
  8. CoinBalance(parm interface{}) ([]byte, error)
  9. TransInfo(parm interface{}) ([]byte, error)
  10. TransferAccounts(parm interface{}) ([]byte, error)
  11. ChainHeight(parm interface{}) ([]byte, error)
  12. ListUnspent(parm interface{}) ([]byte, error)
  13. SendRawTransaction(parm interface{}) ([]byte, error)
  14. SumcoinBalance(parm interface{}) ([]byte, error)
  15. }
  16. const (
  17. CREATEADDR = "/coinproxy/createaddr"
  18. TRANSINFO = "/coinproxy/query/transinfo"
  19. COINBALANCE = "/coinproxy/coinbalance"
  20. SENDCOINS = "/coinproxy/sendcoins"
  21. CHAINHEIGHT = "/coinproxy/blockchain/height"
  22. LISTUNSPENT = "/coinproxy/listunspent"
  23. RAWTRANSFER = "/coinproxy/sendrawtransaction"
  24. SUMCOINBALANCE = "/coinproxy/sumcoinbalance"
  25. )
  26. var Handler = map[string]func(Template, interface{}) ([]byte, error){
  27. CREATEADDR: Template.CreateAddress,
  28. COINBALANCE: Template.CoinBalance,
  29. SENDCOINS: Template.TransferAccounts,
  30. TRANSINFO: Template.TransInfo,
  31. CHAINHEIGHT: Template.ChainHeight,
  32. LISTUNSPENT: Template.ListUnspent,
  33. RAWTRANSFER: Template.SendRawTransaction,
  34. SUMCOINBALANCE: Template.SumcoinBalance,
  35. }
  36. var drivers = make(map[string]Template)
  37. func Register(name string, driver Template) {
  38. if driver == nil {
  39. panic("crypto: Register driver is nil")
  40. }
  41. if _, dup := drivers[name]; dup {
  42. fmt.Println("crypto: Register called twice for driver " + name)
  43. return
  44. }
  45. drivers[name] = driver
  46. }
  47. func New(name string) (c Template, err error) {
  48. c, ok := drivers[name]
  49. if !ok {
  50. err = fmt.Errorf("unknown driver %q", name)
  51. return
  52. }
  53. return c, nil
  54. }