| 85 | } |
| 86 | |
| 87 | func (srv *Server) newSession(conn net.Conn, handler Handler) *Session { |
| 88 | sess := &Session{ |
| 89 | srv: srv, |
| 90 | conn: conn, |
| 91 | handler: handler, |
| 92 | readChan: make(chan []byte, READCHAN_SIZE), |
| 93 | writeChan: make(chan []byte, WRITECHAN_SIZE), |
| 94 | exitChan: make(chan struct{}), |
| 95 | exitFlag: 1, |
| 96 | } |
| 97 | if sess.handler == nil { |
| 98 | sess.handler = srv.Handler |
| 99 | } |
| 100 | sess.Serve() |
| 101 | return sess |
| 102 | } |
| 103 | |
| 104 | func (srv *Server) Connect(addr string, handler Handler) (*Session, error) { |
| 105 | conn, err := net.DialTimeout("tcp", addr, time.Duration(time.Second*5)) |