Mining/pkg/node/msg_dispatcher.go
Snider c0d0a24fb9 Implement peer ping command via IPC
Implemented the 'peer ping' command by establishing an IPC mechanism between the CLI and the running 'node serve' process.
- Added 'ControlService' in 'pkg/node' exposing RPC methods over a Unix socket.
- Implemented 'MessageDispatcher' to route P2P messages to 'Controller' (responses) or 'Worker' (requests).
- Updated 'node serve' to start the IPC server and use the dispatcher.
- Updated 'peer ping' to use the IPC client to request pings from the running node.
- Fixed broken 'pkg/node/dispatcher.go' file.
2026-02-02 01:57:14 +00:00

29 lines
816 B
Go

package node
// MessageDispatcher routes messages to either Controller or Worker
type MessageDispatcher struct {
controller *Controller
worker *Worker
}
// NewMessageDispatcher creates a new MessageDispatcher
func NewMessageDispatcher(controller *Controller, worker *Worker) *MessageDispatcher {
return &MessageDispatcher{
controller: controller,
worker: worker,
}
}
// Dispatch routes incoming messages to the appropriate handler
func (d *MessageDispatcher) Dispatch(conn *PeerConnection, msg *Message) {
// If ReplyTo is set, it's a response to a request initiated by Controller
if msg.ReplyTo != "" && d.controller != nil {
d.controller.HandleResponse(conn, msg)
return
}
// Otherwise treat it as a new request for Worker
if d.worker != nil {
d.worker.HandleMessage(conn, msg)
}
}