Documentation ¶
Overview ¶
Package muxy contains the main interfaces used throughout Muxy: Context, Middleware and Proxy.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Context ¶
type Context struct { // Request contains a reference to the HTTP Request // if it's an HTTP proxied event. // It may be mutated by prior and future middlewares/plugins Request *http.Request // Response contains a reference to the HTTP Response // if it's an HTTP proxied event. // It may be mutated by prior and future middlewares/plugins Response *http.Response // ResponseWriter for the current HTTP session if it exists. ResponseWriter http.ResponseWriter // Bytes contains the current message for TCP sessions. Bytes []byte }
Context is the request context given to Middlewares and Symptoms.
type Middleware ¶
type Middleware interface { // Setup is called when the plugin is registered Setup() // HandleEvent takes a ProxyEvent and acts on the information provided HandleEvent(event ProxyEvent, ctx *Context) // Teardown is used to cleanup any resources on plugin destray Teardown() }
Middleware is a plugin that intercepts requests and injects chaos Middleware's are executed in stacked order before or after a Middleware, and are perfect for jobs like instrumentation. They are given a read/write copy of the runtime context and are executed synchronously.
Middleware's are registered via a plugin factory e.g.
func init() { muxy.PluginFactories.Register(NewMiddlewarex, "sypmtomname") }
Where NewMiddlewarex is a func that returns a interface{} (Middleware) when called
type Proxy ¶
type Proxy interface { Setup([]Middleware) Proxy() Teardown() }
Proxy is the interface for a Proxy plugin
type ProxyEvent ¶
type ProxyEvent int
ProxyEvent is the event set to a proxy
const ( // EventPreDispatch is the event sent prior to dispatching a request EventPreDispatch ProxyEvent = iota // EventPostDispatch is the event sent directly after dispatching a request EventPostDispatch )