From c936044526eff70d73fbefa3c53963d4cfb2a5c0 Mon Sep 17 00:00:00 2001
From: zhangmeng <775834166@qq.com>
Date: 星期二, 16 五月 2023 16:58:40 +0800
Subject: [PATCH] for go get
---
cmd/make.sh | 0
pool.go | 0
README.md | 54 ++++++++++
cmd/TST/ctest/ctest.cpp | 0
/dev/null | 218 -------------------------------------------
producer.go | 0
consumer.go | 0
pointer.go | 0
cmd/clib/libnsqclient.h | 0
cmd/main.go | 0
conn.go | 0
channel.go | 0
cmd/TST/test/test.go | 0
13 files changed, 52 insertions(+), 220 deletions(-)
diff --git a/README.md b/README.md
index ed54d46..432d86d 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,54 @@
-## nsqclient
+# NSQPool
-nsq client
+NSQPool is a thread safe connection pool for nsq producer. It can be used to
+manage and reuse nsq producer connection.
+
+## Install and Usage
+
+Install the package with:
+
+```bash
+github.com/qgymje/nsqpool
+```
+
+Import it with:
+
+```go
+import (
+ "github.com/qgymje/nsqpool"
+ nsq "github.com/nsqio/go-nsq"
+)
+```
+
+and use `pool` as the package name inside the code.
+
+## Example
+
+```go
+// create a factory() to be used with channel based pool
+factory := func() (*nsq.Producer, error) {
+ config := nsq.NewConfig()
+ return nsq.NewProducer(":4150", config)
+}
+
+nsqPool, err := pool.NewChannelPool(5, 30, factory)
+
+producer, err := nsqPool.Get()
+
+producer.Publish("topic", "some data")
+// do something with producer and put it back to the pool by closing the connection
+// (this doesn't close the underlying connection instead it's putting it back
+// to the pool).
+producer.Close()
+
+// close pool any time you want, this closes all the connections inside a pool
+nsqPool.Close()
+
+// currently available connections in the pool
+current := nsqPool.Len()
+```
+
+## License
+
+The MIT License (MIT) - see LICENSE for more details
diff --git a/nsqclient/channel.go b/channel.go
similarity index 100%
rename from nsqclient/channel.go
rename to channel.go
diff --git a/TST/ctest/ctest.cpp b/cmd/TST/ctest/ctest.cpp
similarity index 100%
rename from TST/ctest/ctest.cpp
rename to cmd/TST/ctest/ctest.cpp
diff --git a/TST/test/test.go b/cmd/TST/test/test.go
similarity index 100%
rename from TST/test/test.go
rename to cmd/TST/test/test.go
diff --git a/clib/libnsqclient.h b/cmd/clib/libnsqclient.h
similarity index 100%
rename from clib/libnsqclient.h
rename to cmd/clib/libnsqclient.h
diff --git a/main.go b/cmd/main.go
similarity index 100%
rename from main.go
rename to cmd/main.go
diff --git a/make.sh b/cmd/make.sh
similarity index 100%
rename from make.sh
rename to cmd/make.sh
diff --git a/nsqclient/conn.go b/conn.go
similarity index 100%
rename from nsqclient/conn.go
rename to conn.go
diff --git a/nsqclient/consumer.go b/consumer.go
similarity index 100%
rename from nsqclient/consumer.go
rename to consumer.go
diff --git a/go.mod b/go.mod
deleted file mode 100644
index a5e43e0..0000000
--- a/go.mod
+++ /dev/null
@@ -1,5 +0,0 @@
-module nsqclient
-
-go 1.14
-
-require github.com/nsqio/go-nsq v1.1.0
diff --git a/go.sum b/go.sum
deleted file mode 100644
index 457d1d9..0000000
--- a/go.sum
+++ /dev/null
@@ -1,4 +0,0 @@
-github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4=
-github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
-github.com/nsqio/go-nsq v1.1.0 h1:PQg+xxiUjA7V+TLdXw7nVrJ5Jbl3sN86EhGCQj4+FYE=
-github.com/nsqio/go-nsq v1.1.0/go.mod h1:vKq36oyeVXgsS5Q8YEO7WghqidAVXQlcFxzQbQTuDEY=
diff --git a/gonsqcli b/gonsqcli
deleted file mode 100755
index 01eb96b..0000000
--- a/gonsqcli
+++ /dev/null
Binary files differ
diff --git a/nsqclient/LICENSE b/nsqclient/LICENSE
deleted file mode 100644
index 25fdaf6..0000000
--- a/nsqclient/LICENSE
+++ /dev/null
@@ -1,20 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2013 Fatih Arslan
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/nsqclient/README.md b/nsqclient/README.md
deleted file mode 100644
index 432d86d..0000000
--- a/nsqclient/README.md
+++ /dev/null
@@ -1,54 +0,0 @@
-# NSQPool
-
-NSQPool is a thread safe connection pool for nsq producer. It can be used to
-manage and reuse nsq producer connection.
-
-
-## Install and Usage
-
-Install the package with:
-
-```bash
-github.com/qgymje/nsqpool
-```
-
-Import it with:
-
-```go
-import (
- "github.com/qgymje/nsqpool"
- nsq "github.com/nsqio/go-nsq"
-)
-```
-
-and use `pool` as the package name inside the code.
-
-## Example
-
-```go
-// create a factory() to be used with channel based pool
-factory := func() (*nsq.Producer, error) {
- config := nsq.NewConfig()
- return nsq.NewProducer(":4150", config)
-}
-
-nsqPool, err := pool.NewChannelPool(5, 30, factory)
-
-producer, err := nsqPool.Get()
-
-producer.Publish("topic", "some data")
-// do something with producer and put it back to the pool by closing the connection
-// (this doesn't close the underlying connection instead it's putting it back
-// to the pool).
-producer.Close()
-
-// close pool any time you want, this closes all the connections inside a pool
-nsqPool.Close()
-
-// currently available connections in the pool
-current := nsqPool.Len()
-```
-
-## License
-
-The MIT License (MIT) - see LICENSE for more details
diff --git a/nsqclient/channel_test.go b/nsqclient/channel_test.go
deleted file mode 100644
index 725db9b..0000000
--- a/nsqclient/channel_test.go
+++ /dev/null
@@ -1,218 +0,0 @@
-package nsqclient
-
-import (
- "math/rand"
- "sync"
- "testing"
- "time"
-
- "github.com/nsqio/go-nsq"
-)
-
-var (
- InitialCap = 2
- MaximumCap = 10
- factory = func() (*nsq.Producer, error) {
- config := nsq.NewConfig()
- return nsq.NewProducer(":4160", config)
- }
-)
-
-func newChannelPool() (Pool, error) {
- return NewChannelPool(InitialCap, MaximumCap, factory)
-}
-
-func TestNew(t *testing.T) {
- _, err := newChannelPool()
- if err != nil {
- t.Errorf("New error: %s", err)
- }
-}
-
-func TestPool_Get(t *testing.T) {
- p, _ := newChannelPool()
- defer p.Close()
-
- _, err := p.Get()
- if err != nil {
- t.Errorf("Get error: %s", err)
- }
-
- // after one get, current capacity should be lowered by one.
- if p.Len() != (InitialCap - 1) {
- t.Errorf("Get error. Expecting %d, got %d",
- (InitialCap - 1), p.Len())
- }
-
- // get them all
- var wg sync.WaitGroup
- for i := 0; i < (InitialCap - 1); i++ {
- wg.Add(1)
- go func() {
- defer wg.Done()
- _, err := p.Get()
- if err != nil {
- t.Errorf("Get error: %s", err)
- }
- }()
- }
- wg.Wait()
-
- if p.Len() != 0 {
- t.Errorf("Get error. Expecting %d, got %d",
- (InitialCap - 1), p.Len())
- }
-
- _, err = p.Get()
- if err != nil {
- t.Errorf("Get error: %s", err)
- }
-}
-
-func TestPool_Put(t *testing.T) {
- p, err := NewChannelPool(0, 30, factory)
- if err != nil {
- t.Fatal(err)
- }
- defer p.Close()
-
- // get/create from the pool
- conns := make([]*PoolConn, MaximumCap)
- for i := 0; i < MaximumCap; i++ {
- conn, _ := p.Get()
- conns[i] = conn
- }
-
- // now put them all back
- for _, conn := range conns {
- conn.Close()
- }
-
- if p.Len() != MaximumCap {
- t.Errorf("Put error len. Expecting %d, got %d",
- 1, p.Len())
- }
-
- conn, _ := p.Get()
- p.Close() // close pool
-
- conn.Close() // try to put into a full pool
- if p.Len() != 0 {
- t.Errorf("Put error. Closed pool shouldn't allow to put connections.")
- }
-}
-
-func TestPool_PutUnusableConn(t *testing.T) {
- p, _ := newChannelPool()
- defer p.Close()
-
- // ensure pool is not empty
- conn, _ := p.Get()
- conn.Close()
-
- poolSize := p.Len()
- conn, _ = p.Get()
- conn.Close()
- if p.Len() != poolSize {
- t.Errorf("Pool size is expected to be equal to initial size")
- }
-
- conn, _ = p.Get()
- conn.MarkUnusable()
-
- conn.Close()
- if p.Len() != poolSize-1 {
- t.Errorf("Pool size is expected to be initial_size - 1 [%d:%d]", p.Len(), poolSize-1)
- }
-}
-
-func TestPool_UsedCapacity(t *testing.T) {
- p, _ := newChannelPool()
- defer p.Close()
-
- if p.Len() != InitialCap {
- t.Errorf("InitialCap error. Expecting %d, got %d",
- InitialCap, p.Len())
- }
-}
-
-func TestPool_Close(t *testing.T) {
- p, _ := newChannelPool()
-
- // now close it and test all cases we are expecting.
- p.Close()
-
- c := p.(*channelPool)
-
- if c.conns != nil {
- t.Errorf("Close error, conns channel should be nil")
- }
-
- if c.factory != nil {
- t.Errorf("Close error, factory should be nil")
- }
-
- _, err := p.Get()
- if err == nil {
- t.Errorf("Close error, get conn should return an error")
- }
-
- if p.Len() != 0 {
- t.Errorf("Close error used capacity. Expecting 0, got %d", p.Len())
- }
-}
-
-func TestPoolConcurrent(t *testing.T) {
- p, _ := newChannelPool()
- pipe := make(chan *PoolConn, 0)
-
- go func() {
- p.Close()
- }()
-
- for i := 0; i < MaximumCap; i++ {
- go func() {
- conn, _ := p.Get()
-
- pipe <- conn
- }()
-
- go func() {
- conn := <-pipe
- if conn == nil {
- return
- }
- conn.Close()
- }()
- }
-}
-
-func TestPoolConcurrent2(t *testing.T) {
- p, _ := NewChannelPool(0, 30, factory)
-
- var wg sync.WaitGroup
-
- go func() {
- for i := 0; i < 10; i++ {
- wg.Add(1)
- go func(i int) {
- conn, _ := p.Get()
- time.Sleep(time.Millisecond * time.Duration(rand.Intn(100)))
- conn.Close()
- wg.Done()
- }(i)
- }
- }()
-
- for i := 0; i < 10; i++ {
- wg.Add(1)
- go func(i int) {
- conn, _ := p.Get()
- time.Sleep(time.Millisecond * time.Duration(rand.Intn(100)))
- conn.Close()
- wg.Done()
- }(i)
- }
-
- wg.Wait()
-}
diff --git a/nsqclient/pointer.go b/pointer.go
similarity index 100%
rename from nsqclient/pointer.go
rename to pointer.go
diff --git a/nsqclient/pool.go b/pool.go
similarity index 100%
rename from nsqclient/pool.go
rename to pool.go
diff --git a/nsqclient/producer.go b/producer.go
similarity index 100%
rename from nsqclient/producer.go
rename to producer.go
--
Gitblit v1.8.0