upgrader interface returns a wrapper for the upgrade Request + Response for further information gathering while passing to WS protocol

This commit is contained in:
xdrm-brackets 2018-04-26 23:01:25 +02:00
parent 1c06b81cae
commit 5e4341e3d9
1 changed files with 17 additions and 9 deletions

View File

@ -1,26 +1,34 @@
package upgrader
import (
"git.xdrm.io/gws/internal/http/upgrade/response"
"fmt"
"git.xdrm.io/gws/internal/http/upgrade/request"
"net"
)
type T struct {
req *request.T
res *response.T
}
func Upgrade(s net.Conn) error {
func Upgrade(s net.Conn) (*T, error) {
/* (1) Parse request */
req, _ := request.Parse(s)
/* (1) Create upgrder */
inst := new(T)
/* (2) Build response */
res := req.BuildResponse()
/* (2) Parse request */
inst.req, _ = request.Parse(s)
/* (3) Write into socket */
_, err := res.Send(s)
/* (3) Build response */
inst.res = inst.req.BuildResponse()
/* (4) Write into socket */
_, err := inst.res.Send(s)
if err != nil {
return fmt.Errorf("Socket write error: %s", err)
return inst, fmt.Errorf("Socket write error: %s", err)
}
return nil
return inst, nil
}