BFE Callbacks
Callback Points in forwarding process
The Callback Points in the forwarding process are shown below.
List of Callback Points
There are 9 callback points in BFE:
- HandleAccept: after TCP connection with client is established.
- HandleHandshake: after SSL/TLS handshake with client is finished.
- HandleBeforeLocation: before the destination product for the request is identified.
- HandleFoundProduct: after the destination product is identified.
- HandleAfterLocation: after the destination cluster is identified.
- HandleForward: after the destination subcluster is identified, and before the request is forwarded.
- HandleReadResponse: after response from backend is received by BFE.
- HandleRequestFinish: after response from backend is forwarded by BFE.
- HandleFinish: after connection with client is closed.
The definition of callback points is in /bfe_module/bfe_callback.go
Return Values of Callback Function
BFE takes different actions based on the return values of the callback functions. The return values and the actions are defined as follows:
- BfeHandlerFinish: send response, then close connection.
- BfeHandlerGoOn: go on to next callback function.
- BfeHandlerRedirect: redirect directly.
- BfeHandlerResponse: send response.
- BfeHandlerClose: close connection without sending response.
The definition of return values is in /bfe_module/bfe_handler_list.go
Types of Callback Functions
The format of callback functions may be different for different callback points. There are 5 types of callback functions.
- HandlersAccept: Handler for processing connection estalishment
- HandlersRequest: Handler for processing request received
- HandlersForward: Handler for request forwarding process
- HandlersResponse: Handler for processing response received
- HandlersFinish: Handler for processing connection close
The types of callback function are defined in /bfe_module/bfe_handler_list.go
The following describes each type of callback functions in detail
Note: For the meaning of type int in the return value below, please refer to "Return Value of Callback Function" section above.
HandlersAccept
- Applicable callback points:
- HandleAccept
- HandleHandshake
- Function prototype:
handler(session *bfe_basic.Session) int
HandlersRequest
- Applicable callback point:
- HandleBeforeLocation
- HandleFoundProduct
- HandleAfterLocation
- Function prototype:
handler(req *bfe_basic.Request) (int, *bfe_http.Response)
HandlersForward
- Applicable callback point:
- HandleForward
- Function prototype:
handler(req *bfe_basic.Request) int
HandlersResponse
- Applicable callback point:
- HandleReadResponse
- HandleRequestFinish
- Function prototype:
handler(req *bfe_basic.Request, res *bfe_http.Response) int
HandlersFinish
- Applicable callback point:
- HandleFinish
- Function prototype:
handler(session *bfe_basic.Session) int