| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- package main
- import (
- "fmt"
- "log"
- "time"
- raft_client "igit.com/xbase/raft/client"
- )
- func main() {
- // 1. Create a new client instance
- // Ensure your Raft server is running on this address
- client := raft_client.NewClient("127.0.0.1:9011")
- // 2. Connect to the server
- fmt.Println("Connecting to server...")
- if err := client.Connect(); err != nil {
- log.Fatalf("Failed to connect: %v", err)
- }
- defer client.Close()
- // 3. Login
- // Default credentials for the example server
- username := "root"
- password := "11111"
- fmt.Printf("Logging in as %s...\n", username)
- token, err := client.Login(username, password)
- if err != nil {
- log.Printf("Login failed: %v", err)
- log.Println("Attempting to use SYSTEM_INTERNAL bypass (Development Mode)...")
- if err := client.Auth("SYSTEM_INTERNAL"); err != nil {
- log.Fatalf("Bypass failed: %v. Please reset data/node1 or check credentials.", err)
- }
- fmt.Println("Bypass successful! using SYSTEM_INTERNAL token.")
- } else {
- fmt.Printf("Login successful! Token: %s\n", token)
- }
- // 4. Set a value
- key := "demo_key"
- value := "Hello Raft Client! " + time.Now().Format(time.RFC3339)
- fmt.Printf("Setting key '%s' to '%s'...\n", key, value)
- if err := client.Set(key, value); err != nil {
- log.Fatalf("Set failed: %v", err)
- }
- fmt.Println("Set successful.")
- // 5. Get the value back
- fmt.Printf("Getting key '%s'...\n", key)
- gotVal, err := client.Get(key)
- if err != nil {
- log.Fatalf("Get failed: %v", err)
- }
- fmt.Printf("Got value: %s\n", gotVal)
- // 6. Verify
- if gotVal == value {
- fmt.Println("Verification successful: Value matches!")
- } else {
- fmt.Printf("Verification failed: Expected '%s', got '%s'\n", value, gotVal)
- }
- // 7. Async Set Example (High Performance)
- fmt.Println("\nTesting Async Set (ASET)...")
- asyncKey := "async_demo_key"
- asyncVal := "Async Value"
- if err := client.SetAsync(asyncKey, asyncVal); err != nil {
- log.Fatalf("Async Set failed: %v", err)
- }
- // Wait a tiny bit for replication (since it's async, it might take a ms to be consistent if reading immediately from same node)
- time.Sleep(10 * time.Millisecond)
- gotAsyncVal, err := client.Get(asyncKey)
- if err != nil {
- log.Fatalf("Get Async Key failed: %v", err)
- }
- fmt.Printf("Got async value: %s\n", gotAsyncVal)
- }
|