mirror of
https://github.com/XRPLF/clio.git
synced 2025-12-01 17:15:52 +00:00
feat: Snapshot import feature (#1970)
Implement snapshot import cmd `clio_snapshot --server --grpc_server 0.0.0.0:12345 --path <snapshot_path>` Implement snapshot range cmd `./clio_snapshot --range --path <snapshot_path>` Add LedgerHouses: It is responsible for reading/writing snapshot data Server: Start grpc server and ws server
This commit is contained in:
46
tools/snapshot/internal/server/server.go
Normal file
46
tools/snapshot/internal/server/server.go
Normal file
@@ -0,0 +1,46 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"net"
|
||||
|
||||
"xrplf/clio/clio_snapshot/internal/ledgers"
|
||||
pb "xrplf/clio/clio_snapshot/org/xrpl/rpc/v1"
|
||||
|
||||
"google.golang.org/grpc"
|
||||
)
|
||||
|
||||
func StartServer(grpcServerAddr string, wsServerAddr string, path string) {
|
||||
ledgersHouse := ledgers.NewLedgersHouse(path)
|
||||
|
||||
if !ledgersHouse.IsExist() {
|
||||
log.Fatalf("Can't start server againist invalid snapshot folder: %s", path)
|
||||
}
|
||||
|
||||
startSeq, endSeq, err := ledgersHouse.GetRange()
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to get range: %v", err)
|
||||
}
|
||||
|
||||
lis, err := net.Listen("tcp", grpcServerAddr)
|
||||
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to listen: %v", err)
|
||||
}
|
||||
|
||||
grpcServer := grpc.NewServer()
|
||||
pb.RegisterXRPLedgerAPIServiceServer(grpcServer, newServer(path))
|
||||
log.Print("Starting server...")
|
||||
go grpcServer.Serve(lis)
|
||||
|
||||
wsServer := NewWebSocketServer("Snapshot Server", func(message string) string {
|
||||
//mimic the response of the ledger stream
|
||||
ledgerStreamReply := fmt.Sprintf("{\"fee_base\":10,\"ledger_hash\":\"A320C67DA7D1250A577AC5AACDF06ADC25E0EEEF7AE5B8D63CE2E1CC7F76A438\",\"ledger_index\":%d,\"ledger_time\":792853443,\"reserve_base\":1000000,\"reserve_inc\":200000,\"txn_count\":0,\"type\":\"ledgerClosed\",\"validated_ledgers\":\"%d-%d\"}",
|
||||
endSeq, startSeq, endSeq)
|
||||
return ledgerStreamReply
|
||||
})
|
||||
wsServer.Start(wsServerAddr)
|
||||
|
||||
select {}
|
||||
}
|
||||
Reference in New Issue
Block a user