Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions core/run.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,14 @@ def main():
time.sleep(0.5)
if not args.server_only:
if not args.no_cli:
cli_cmd = f"./frontend/netmap_cli/build/netmap_cli -H localhost {port}"
cli_cmd = f"./frontend/netmap_cli/build/netmap_cli -H localhost -p {port}"
open_terminal(cli_cmd)

if not args.no_gui:
gui_cmd = f"source venv/bin/activate && python3 ./frontend/gui.py --port {port}"
go_server_cmd ="cd ./frontend/go_server && go run main.go"
open_terminal(go_server_cmd)
time.sleep(0.5)
gui_cmd = "source venv/bin/activate && python3 ./frontend/gui/main.py"
open_terminal(gui_cmd)

if __name__ == "__main__":
Expand Down
7 changes: 5 additions & 2 deletions frontend/go_server/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,14 @@ module netmap

go 1.23.6

require (
google.golang.org/grpc v1.70.0
google.golang.org/protobuf v1.36.5
)

require (
golang.org/x/net v0.32.0 // indirect
golang.org/x/sys v0.28.0 // indirect
golang.org/x/text v0.21.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect
google.golang.org/grpc v1.70.0 // indirect
google.golang.org/protobuf v1.36.5 // indirect
)
22 changes: 20 additions & 2 deletions frontend/go_server/go.sum
Original file line number Diff line number Diff line change
@@ -1,3 +1,23 @@
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
go.opentelemetry.io/otel v1.32.0 h1:WnBN+Xjcteh0zdk01SVqV55d/m62NJLJdIyb4y/WO5U=
go.opentelemetry.io/otel v1.32.0/go.mod h1:00DCVSB0RQcnzlwyTfqtxSm+DRr9hpYrHjNGiBHVQIg=
go.opentelemetry.io/otel/metric v1.32.0 h1:xV2umtmNcThh2/a/aCP+h64Xx5wsj8qqnkYZktzNa0M=
go.opentelemetry.io/otel/metric v1.32.0/go.mod h1:jH7CIbbK6SH2V2wE16W05BHCtIDzauciCRLoc/SyMv8=
go.opentelemetry.io/otel/sdk v1.32.0 h1:RNxepc9vK59A8XsgZQouW8ue8Gkb4jpWtJm9ge5lEG4=
go.opentelemetry.io/otel/sdk v1.32.0/go.mod h1:LqgegDBjKMmb2GC6/PrTnteJG39I8/vJCAP9LlJXEjU=
go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU=
go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ=
go.opentelemetry.io/otel/trace v1.32.0 h1:WIC9mYrXf8TmY/EXuULKc8hR17vE+Hjv2cssQDe03fM=
go.opentelemetry.io/otel/trace v1.32.0/go.mod h1:+i4rkvCraA+tG6AzwloGaCtkx53Fa+L+V8e9a7YvhT8=
golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI=
golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs=
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
Expand All @@ -8,7 +28,5 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:
google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU=
google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ=
google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw=
google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io=
google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM=
google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
3 changes: 1 addition & 2 deletions frontend/go_server/grpc_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@ import (
"net"

"google.golang.org/grpc"
"your_project_path/proto" // replace with the correct path to your generated proto files
)
"netmap/proto"

const (
serverAddress = "localhost:50051" // Python gRPC server address
Expand Down
45 changes: 32 additions & 13 deletions frontend/go_server/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,34 +2,47 @@ package main

import (
"context"
"encoding/json"
"fmt"
"log"
"net"
"encoding/json"

pb "path/to/generated/proto"
pb "netmap/proto" // Ensure this is the correct relative path to your generated proto file
"google.golang.org/grpc"
)

// NetMapServer struct
// NetMapServer struct implements the gRPC server interface
type NetMapServer struct {
pb.UnimplementedNetMapServer
}

// GetState: Fetch current netmap state
func (s *NetMapServer) GetState(ctx context.Context, req *pb.Request) (*pb.Response, error) {
// Fetch network state from C++ server
// GetState: Fetch current netmap state and send it to the Python client
func (s *NetMapServer) GetState(ctx context.Context, req *pb.NetworkDataRequest) (*pb.NetworkDataResponse, error) {
// Fetch network state from the C++ backend
data := queryCPlusPlusBackend()

// Convert to JSON for Python GUI
jsonData, _ := json.Marshal(data)
jsonData, err := json.Marshal(data)
if err != nil {
return nil, fmt.Errorf("failed to marshal data: %v", err)
}

return &pb.Response{JsonData: string(jsonData)}, nil
// Return the response with the JSON data
return &pb.NetworkDataResponse{Message: string(jsonData)}, nil
}

// Function to query C++ backend over socket
func (s *NetMapServer) SendNetworkData(ctx context.Context, req *pb.NetworkDataRequest) (*pb.NetworkDataResponse, error) {
// Handle the request and return a response
fmt.Println("Received network data:", req.GetNetworkData())
return &pb.NetworkDataResponse{
Message: "Network data received successfully",
}, nil
}

// Function to query C++ backend (over a socket or another method)
func queryCPlusPlusBackend() map[string]interface{} {
// Implement socket connection to C++ here
// Placeholder: Implement the actual socket or inter-process communication with C++ backend
// Example mock data returned from the C++ backend for demonstration
return map[string]interface{}{
"nodes": []map[string]string{
{"ip": "192.168.1.1", "mac": "AA:BB:CC:DD:EE:FF"},
Expand All @@ -41,16 +54,22 @@ func queryCPlusPlusBackend() map[string]interface{} {
}

func main() {
// Listen for incoming connections on TCP port 50051
lis, err := net.Listen("tcp", ":50051")
if err != nil {
log.Fatalf("Failed to listen: %v", err)
log.Fatalf("Failed to listen on port 50051: %v", err)
}

// Create a new gRPC server
grpcServer := grpc.NewServer()

// Register the NetMapServer with the gRPC server
pb.RegisterNetMapServer(grpcServer, &NetMapServer{})

fmt.Println("gRPC Server running on port 50051")
fmt.Println("gRPC Server is running on port 50051")

// Start serving requests
if err := grpcServer.Serve(lis); err != nil {
log.Fatalf("Failed to serve: %v", err)
log.Fatalf("Failed to serve gRPC server: %v", err)
}
}
Loading