Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 51a1a4f

Browse files
committedJun 4, 2023
refactor: pass channelSize to be able to controll buffered channel by the caller go-ldap#319
1 parent 03e1d76 commit 51a1a4f

6 files changed

+20
-10
lines changed
 

‎examples_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ func ExampleConn_SearchWithChannel() {
7070
ctx, cancel := context.WithCancel(context.Background())
7171
defer cancel()
7272

73-
ch := l.SearchWithChannel(ctx, searchRequest)
73+
ch := l.SearchWithChannel(ctx, searchRequest, 64)
7474
for res := range ch {
7575
if res.Error != nil {
7676
log.Fatalf("Error searching: %s", res.Error)

‎ldap_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,7 @@ func TestSearchWithChannel(t *testing.T) {
362362

363363
srs := make([]*Entry, 0)
364364
ctx := context.Background()
365-
for sr := range l.SearchWithChannel(ctx, searchRequest) {
365+
for sr := range l.SearchWithChannel(ctx, searchRequest, 64) {
366366
if sr.Error != nil {
367367
t.Fatal(err)
368368
}
@@ -390,7 +390,7 @@ func TestSearchWithChannelAndCancel(t *testing.T) {
390390
srs := make([]*Entry, 0)
391391
ctx, cancel := context.WithCancel(context.Background())
392392
defer cancel()
393-
ch := l.SearchWithChannel(ctx, searchRequest)
393+
ch := l.SearchWithChannel(ctx, searchRequest, 0)
394394
for i := 0; i < 10; i++ {
395395
sr := <-ch
396396
if sr.Error != nil {

‎search.go

+7-2
Original file line numberDiff line numberDiff line change
@@ -587,8 +587,13 @@ func (l *Conn) Search(searchRequest *SearchRequest) (*SearchResult, error) {
587587
// all results until an error happens (or the search successfully finished),
588588
// e.g. for size / time limited requests all are recieved via the channel
589589
// until the limit is reached.
590-
func (l *Conn) SearchWithChannel(ctx context.Context, searchRequest *SearchRequest) <-chan *SearchSingleResult {
591-
ch := make(chan *SearchSingleResult)
590+
func (l *Conn) SearchWithChannel(ctx context.Context, searchRequest *SearchRequest, channelSize int) <-chan *SearchSingleResult {
591+
var ch chan *SearchSingleResult
592+
if channelSize > 0 {
593+
ch = make(chan *SearchSingleResult, channelSize)
594+
} else {
595+
ch = make(chan *SearchSingleResult)
596+
}
592597
go func() {
593598
defer close(ch)
594599
if l.IsClosing() {

‎v3/examples_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ func ExampleConn_SearchWithChannel() {
7070
ctx, cancel := context.WithCancel(context.Background())
7171
defer cancel()
7272

73-
ch := l.SearchWithChannel(ctx, searchRequest)
73+
ch := l.SearchWithChannel(ctx, searchRequest, 64)
7474
for res := range ch {
7575
if res.Error != nil {
7676
log.Fatalf("Error searching: %s", res.Error)

‎v3/ldap_test.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,7 @@ func TestSearchWithChannel(t *testing.T) {
362362

363363
srs := make([]*Entry, 0)
364364
ctx := context.Background()
365-
for sr := range l.SearchWithChannel(ctx, searchRequest) {
365+
for sr := range l.SearchWithChannel(ctx, searchRequest, 64) {
366366
if sr.Error != nil {
367367
t.Fatal(err)
368368
}
@@ -390,7 +390,7 @@ func TestSearchWithChannelAndCancel(t *testing.T) {
390390
srs := make([]*Entry, 0)
391391
ctx, cancel := context.WithCancel(context.Background())
392392
defer cancel()
393-
ch := l.SearchWithChannel(ctx, searchRequest)
393+
ch := l.SearchWithChannel(ctx, searchRequest, 0)
394394
for i := 0; i < 10; i++ {
395395
sr := <-ch
396396
if sr.Error != nil {

‎v3/search.go

+7-2
Original file line numberDiff line numberDiff line change
@@ -589,8 +589,13 @@ func (l *Conn) Search(searchRequest *SearchRequest) (*SearchResult, error) {
589589
// all results until an error happens (or the search successfully finished),
590590
// e.g. for size / time limited requests all are recieved via the channel
591591
// until the limit is reached.
592-
func (l *Conn) SearchWithChannel(ctx context.Context, searchRequest *SearchRequest) <-chan *SearchSingleResult {
593-
ch := make(chan *SearchSingleResult)
592+
func (l *Conn) SearchWithChannel(ctx context.Context, searchRequest *SearchRequest, channelSize int) <-chan *SearchSingleResult {
593+
var ch chan *SearchSingleResult
594+
if channelSize > 0 {
595+
ch = make(chan *SearchSingleResult, channelSize)
596+
} else {
597+
ch = make(chan *SearchSingleResult)
598+
}
594599
go func() {
595600
defer close(ch)
596601
if l.IsClosing() {

0 commit comments

Comments
 (0)
Please sign in to comment.