074b2374b8
This commit contains the entire btcrpcclient repository along with several changes needed to move all of the files into the rpcclient directory in order to prepare it for merging. This does NOT update btcd or any of the other packages to use the new location as that will be done separately. - All import paths in the old btcrpcclient files have been changed to the new location - All references to btcrpcclient as the package name have been changed to rpcclient
78 lines
2.3 KiB
Go
78 lines
2.3 KiB
Go
// 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"
|
|
"time"
|
|
|
|
"github.com/btcsuite/btcd/rpcclient"
|
|
"github.com/btcsuite/btcd/wire"
|
|
"github.com/btcsuite/btcutil"
|
|
)
|
|
|
|
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 []*btcutil.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 btcd RPC server using websockets.
|
|
btcdHomeDir := btcutil.AppDataDir("btcd", false)
|
|
certs, err := ioutil.ReadFile(filepath.Join(btcdHomeDir, "rpc.cert"))
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
connCfg := &rpcclient.ConnConfig{
|
|
Host: "localhost:8334",
|
|
Endpoint: "ws",
|
|
User: "yourrpcuser",
|
|
Pass: "yourrpcpass",
|
|
Certificates: certs,
|
|
}
|
|
client, err := rpcclient.New(connCfg, &ntfnHandlers)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
// Register for block connect and disconnect notifications.
|
|
if err := client.NotifyBlocks(); err != nil {
|
|
log.Fatal(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)
|
|
|
|
// For this example gracefully shutdown the client after 10 seconds.
|
|
// Ordinarily when to shutdown the client is highly application
|
|
// specific.
|
|
log.Println("Client shutdown in 10 seconds...")
|
|
time.AfterFunc(time.Second*10, func() {
|
|
log.Println("Client shutting down...")
|
|
client.Shutdown()
|
|
log.Println("Client shutdown complete.")
|
|
})
|
|
|
|
// Wait until the client either shuts down gracefully (or the user
|
|
// terminates the process with Ctrl+C).
|
|
client.WaitForShutdown()
|
|
}
|