frontend: implement SendTransaction
This commit is contained in:
@@ -34,6 +34,8 @@ func init() {
|
||||
})
|
||||
}
|
||||
|
||||
// TODO stream logging
|
||||
|
||||
func LoggingInterceptor() grpc.ServerOption {
|
||||
return grpc.UnaryInterceptor(logInterceptor)
|
||||
}
|
||||
@@ -73,12 +75,13 @@ func loggerFromContext(ctx context.Context) *logrus.Entry {
|
||||
}
|
||||
|
||||
type Options struct {
|
||||
bindAddr string `json:"bind_address,omitempty"`
|
||||
dbPath string `json:"db_path"`
|
||||
tlsCertPath string `json:"tls_cert_path,omitempty"`
|
||||
tlsKeyPath string `json:"tls_cert_key,omitempty"`
|
||||
logLevel uint64 `json:"log_level,omitempty"`
|
||||
logPath string `json:"log_file,omitempty"`
|
||||
bindAddr string `json:"bind_address,omitempty"`
|
||||
dbPath string `json:"db_path"`
|
||||
tlsCertPath string `json:"tls_cert_path,omitempty"`
|
||||
tlsKeyPath string `json:"tls_cert_key,omitempty"`
|
||||
logLevel uint64 `json:"log_level,omitempty"`
|
||||
logPath string `json:"log_file,omitempty"`
|
||||
zcashConfPath string `json:"zcash_conf,omitempty"`
|
||||
}
|
||||
|
||||
func main() {
|
||||
@@ -89,11 +92,12 @@ func main() {
|
||||
flag.StringVar(&opts.tlsKeyPath, "tls-key", "", "the path to a TLS key file (optional)")
|
||||
flag.Uint64Var(&opts.logLevel, "log-level", uint64(logrus.InfoLevel), "log level (logrus 1-7)")
|
||||
flag.StringVar(&opts.logPath, "log-file", "", "log file to write to")
|
||||
flag.StringVar(&opts.zcashConfPath, "conf-file", "", "conf file to pull RPC creds from")
|
||||
// TODO prod metrics
|
||||
// TODO support config from file and env vars
|
||||
flag.Parse()
|
||||
|
||||
if opts.dbPath == "" {
|
||||
if opts.dbPath == "" || opts.zcashConfPath == "" {
|
||||
flag.Usage()
|
||||
os.Exit(1)
|
||||
}
|
||||
@@ -136,13 +140,32 @@ func main() {
|
||||
reflection.Register(server)
|
||||
}
|
||||
|
||||
// Initialize Zcash RPC client. Right now (Jan 2018) this is only for
|
||||
// sending transactions, but in the future it could back a different type
|
||||
// of block streamer.
|
||||
|
||||
rpcClient, err := frontend.NewZRPCFromConf(opts.zcashConfPath)
|
||||
if err != nil {
|
||||
log.WithFields(logrus.Fields{
|
||||
"error": err,
|
||||
}).Warn("zcash.conf failed, will try empty credentials for rpc")
|
||||
|
||||
rpcClient, err = frontend.NewZRPCFromCreds("127.0.0.1:8232", "", "")
|
||||
|
||||
if err != nil {
|
||||
log.WithFields(logrus.Fields{
|
||||
"error": err,
|
||||
}).Warn("couldn't start rpc conn. won't be able to send transactions")
|
||||
}
|
||||
}
|
||||
|
||||
// Compact transaction service initialization
|
||||
service, err := frontend.NewSQLiteStreamer(opts.dbPath)
|
||||
service, err := frontend.NewSQLiteStreamer(opts.dbPath, rpcClient)
|
||||
if err != nil {
|
||||
log.WithFields(logrus.Fields{
|
||||
"db_path": opts.dbPath,
|
||||
"error": err,
|
||||
}).Fatal("couldn't create SQL streamer")
|
||||
}).Fatal("couldn't create SQL backend")
|
||||
}
|
||||
defer service.(*frontend.SqlStreamer).GracefulStop()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user