client_tcp.go 792 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package cpn
  2. import (
  3. "net"
  4. "one.com/nnet"
  5. )
  6. type TcpClient struct {
  7. *Hub
  8. addr string
  9. }
  10. func NewTcpClient(cf *nnet.HubConfig, cb nnet.ISessionCallback, p nnet.IProtocol) *TcpClient {
  11. return &TcpClient{
  12. Hub: newHub(cf, cb, p),
  13. }
  14. }
  15. func (self *TcpClient) Start() error {
  16. return nil
  17. }
  18. func (self *TcpClient) NewConnection(addr string, id uint64) error {
  19. tcpAddr, err := net.ResolveTCPAddr("tcp", addr)
  20. if err != nil {
  21. return err
  22. }
  23. conn, err := net.DialTCP("tcp", nil, tcpAddr)
  24. if err != nil {
  25. return err
  26. }
  27. self.wg.Add(1)
  28. go func() {
  29. ses := newSession(TcpConn{conn}, self)
  30. ses.UpdateId(id)
  31. ses.Do()
  32. self.wg.Done()
  33. }()
  34. return nil
  35. }
  36. func (self *TcpClient) DoJob(int) {
  37. }
  38. func (self *TcpClient) Stop() error {
  39. close(self.chQuit)
  40. self.wg.Wait()
  41. return nil
  42. }