diff options
| author | fangyuanziti <[email protected]> | 2015-02-22 20:22:38 +0800 |
|---|---|---|
| committer | fangyuanziti <[email protected]> | 2015-02-22 20:28:58 +0800 |
| commit | 5d8118d8abc94eff8e9723a5b5ad15e8310560a3 (patch) | |
| tree | e8de870e83fa106e70a08d9b9c472cd642f6f82a | |
| parent | eabb7feb995f0d542f1972909a69f4ab02c8f210 (diff) | |
add a new api: NewConnNet
| -rw-r--r-- | conn.go | 11 | ||||
| -rw-r--r-- | xgb.go | 20 |
2 files changed, 31 insertions, 0 deletions
@@ -29,6 +29,17 @@ func (c *Conn) connect(display string) error { return err } + return c.postConnect() +} + +// connect init from to the net.Conn, +func (c *Conn) connectNet(netConn net.Conn) error { + c.conn = netConn + return c.postConnect() +} + +// do the postConnect action after Conn get it's underly net.Conn +func (c *Conn) postConnect() error { // Get authentication data authName, authData, err := readAuthority(c.host, c.display) noauth := false @@ -98,6 +98,26 @@ func NewConnDisplay(display string) (*Conn, error) { return nil, err } + return postNewConn(conn) +} + +// NewConnDisplay is just like NewConn, but allows a specific net.Conn +// to be used. +func NewConnNet(netConn net.Conn) (*Conn, error) { + conn := &Conn{} + + // First connect. This reads authority, checks DISPLAY environment + // variable, and loads the initial Setup info. + err := conn.connectNet(netConn) + + if err != nil { + return nil, err + } + + return postNewConn(conn) +} + +func postNewConn(conn *Conn) (*Conn, error) { conn.Extensions = make(map[string]byte) conn.cookieChan = make(chan *Cookie, cookieBuffer) |
