This repository was archived by the owner on Jul 18, 2025. It is now read-only.

Description
Is there a recommended pattern for implementing a server that can handle a multitude of different requests? The question I have is how to represent the request. For example, suppose I have the following requests:
type EchoRequest struct {
Cmd: string // "echo"
Text: string
Ret: libchan.Sender
}
type AddRequest struct {
Cmd: string // "add"
A, B: int
Ret: libchan.Sender
}
What would I Receive
into on the server side without going through map[interface{}]interface{}
hell? The cleanest I can come up with is to give each request type its own (well-typed) channel and to make the root channel just send a map of request-type=>channel. If these were Go channels I would receive into an interface{}, look up the command, and then coerce the interface{} to EchoRequest
or AddRequest
. But that doesn't work with libchan as far as I can see. I'm probably missing something obvious...