// Copyright (c) 2014-2017 The btcsuite developers // Use of this source code is governed by an ISC // license that can be found in the LICENSE file. package main import ( "io/ioutil" "log" "path/filepath" "github.com/lbryio/lbcd/rpcclient" "github.com/lbryio/lbcd/wire" "github.com/lbryio/lbcutil" ) func main() { // Only override the handlers for notifications you care about. // Also note most of these handlers will only be called if you register // for notifications. See the documentation of the rpcclient // NotificationHandlers type for more details about each handler. ntfnHandlers := rpcclient.NotificationHandlers{ OnFilteredBlockConnected: func(height int32, header *wire.BlockHeader, txns []*lbcutil.Tx) { log.Printf("Block connected: %v (%d) %v", header.BlockHash(), height, header.Timestamp) }, OnFilteredBlockDisconnected: func(height int32, header *wire.BlockHeader) { log.Printf("Block disconnected: %v (%d) %v", header.BlockHash(), height, header.Timestamp) }, } // Connect to local lbcd RPC server using websockets. lbcdHomeDir := lbcutil.AppDataDir("lbcd", false) certs, err := ioutil.ReadFile(filepath.Join(lbcdHomeDir, "rpc.cert")) if err != nil { log.Fatal(err) } connCfg := &rpcclient.ConnConfig{ Host: "localhost:9245", Endpoint: "ws", User: "rpcuser", Pass: "rpcpass", Certificates: certs, } client, err := rpcclient.New(connCfg, &ntfnHandlers) if err != nil { log.Fatalln(err) } // Register for block connect and disconnect notifications. if err := client.NotifyBlocks(); err != nil { log.Fatalln(err) } log.Println("NotifyBlocks: Registration Complete") // Get the current block count. blockCount, err := client.GetBlockCount() if err != nil { log.Fatal(err) } log.Printf("Block count: %d", blockCount) // Wait until the client either shuts down gracefully (or the user // terminates the process with Ctrl+C). client.WaitForShutdown() }