|
- package client
-
- import (
- "bufio"
- "net"
- "time"
-
- "github.com/ngaut/deadline"
- )
-
- // Conn is the connection for timestamp oracle server, it is not thread safe.
- type Conn struct {
- addr string
- net.Conn
- closed bool
- r *bufio.Reader
- w *bufio.Writer
- netTimeout time.Duration
- }
-
- // NewConnection creates a conn.
- func NewConnection(addr string, netTimeout time.Duration) (*Conn, error) {
- conn, err := net.DialTimeout("tcp", addr, netTimeout)
- if err != nil {
- return nil, err
- }
-
- return &Conn{
- addr: addr,
- Conn: conn,
- r: bufio.NewReaderSize(deadline.NewDeadlineReader(conn, netTimeout), 512*1024),
- w: bufio.NewWriterSize(deadline.NewDeadlineWriter(conn, netTimeout), 512*1024),
- netTimeout: netTimeout,
- }, nil
- }
-
- // Read reads data and stores it into p.
- func (c *Conn) Read(p []byte) (int, error) {
- return c.r.Read(p)
- }
-
- // Flush flushs buffered data.
- func (c *Conn) Flush() error {
- return c.w.Flush()
- }
-
- // Write writes p.
- func (c *Conn) Write(p []byte) (int, error) {
- return c.w.Write(p)
- }
|