mirror of
https://github.com/fumiama/go-registry.git
synced 2026-06-21 10:30:31 +08:00
fix: Close
This commit is contained in:
32
reg.go
32
reg.go
@@ -23,12 +23,11 @@ var (
|
|||||||
|
|
||||||
type Regedit struct {
|
type Regedit struct {
|
||||||
sync.Mutex
|
sync.Mutex
|
||||||
conn net.Conn
|
conn net.Conn
|
||||||
addr string
|
addr string
|
||||||
tp tea.TEA
|
tp tea.TEA
|
||||||
ts *tea.TEA
|
ts *tea.TEA
|
||||||
seq byte
|
seq byte
|
||||||
isopen bool
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewRegedit(addr, pwd, sps string) *Regedit {
|
func NewRegedit(addr, pwd, sps string) *Regedit {
|
||||||
@@ -55,38 +54,31 @@ func NewRegReader(addr, pwd string) *Regedit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (r *Regedit) Connect() (err error) {
|
func (r *Regedit) Connect() (err error) {
|
||||||
if !r.isopen {
|
r.Lock()
|
||||||
r.Lock()
|
if r.conn == nil {
|
||||||
r.conn, err = net.Dial("tcp", r.addr)
|
r.conn, err = net.Dial("tcp", r.addr)
|
||||||
if err == nil {
|
|
||||||
r.isopen = true
|
|
||||||
}
|
|
||||||
r.Unlock()
|
|
||||||
}
|
}
|
||||||
|
r.Unlock()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Regedit) ConnectIn(wait time.Duration) (err error) {
|
func (r *Regedit) ConnectIn(wait time.Duration) (err error) {
|
||||||
if !r.isopen {
|
r.Lock()
|
||||||
r.Lock()
|
if r.conn == nil {
|
||||||
r.conn, err = net.DialTimeout("tcp", r.addr, wait)
|
r.conn, err = net.DialTimeout("tcp", r.addr, wait)
|
||||||
if err == nil {
|
|
||||||
r.isopen = true
|
|
||||||
}
|
|
||||||
r.Unlock()
|
|
||||||
}
|
}
|
||||||
|
r.Unlock()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Regedit) Close() (err error) {
|
func (r *Regedit) Close() (err error) {
|
||||||
r.Lock()
|
r.Lock()
|
||||||
defer r.Unlock()
|
defer r.Unlock()
|
||||||
if r.isopen {
|
if r.conn != nil {
|
||||||
p := NewCmdPacket(CMDEND, []byte("fill"), &r.tp)
|
p := NewCmdPacket(CMDEND, []byte("fill"), &r.tp)
|
||||||
r.conn.Write(p.Encrypt(r.seq))
|
r.conn.Write(p.Encrypt(r.seq))
|
||||||
p.Put()
|
p.Put()
|
||||||
r.seq = 0
|
r.seq = 0
|
||||||
r.isopen = false
|
|
||||||
err = r.conn.Close()
|
err = r.conn.Close()
|
||||||
r.conn = nil
|
r.conn = nil
|
||||||
return
|
return
|
||||||
|
|||||||
Reference in New Issue
Block a user