1
0
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:
源文雨
2022-03-28 17:20:43 +08:00
parent b75079a9ca
commit 892dc502b4

32
reg.go
View File

@@ -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