You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2021/08/21 13:36:17 UTC
[plc4x] branch develop updated: - Simplified the handling of the
transports GetNumReadableBytes to be less of a memory leak (Turns out all
transports actually don't block here)
This is an automated email from the ASF dual-hosted git repository.
cdutz pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git
The following commit(s) were added to refs/heads/develop by this push:
new 60b0b3e - Simplified the handling of the transports GetNumReadableBytes to be less of a memory leak (Turns out all transports actually don't block here)
60b0b3e is described below
commit 60b0b3ea799fc88c6318dd74f421d1f347b2766a
Author: cdutz <ch...@c-ware.de>
AuthorDate: Sat Aug 21 15:36:10 2021 +0200
- Simplified the handling of the transports GetNumReadableBytes to be less of a memory leak (Turns out all transports actually don't block here)
---
.../plc4go/spi/transports/tcp/Transport.go | 26 +++++-----------------
.../plc4go/spi/transports/test/Transport.go | 1 +
.../plc4go/spi/transports/udp/Transport.go | 26 +++++-----------------
3 files changed, 11 insertions(+), 42 deletions(-)
diff --git a/plc4go/internal/plc4go/spi/transports/tcp/Transport.go b/plc4go/internal/plc4go/spi/transports/tcp/Transport.go
index 7262369..0066e7f 100644
--- a/plc4go/internal/plc4go/spi/transports/tcp/Transport.go
+++ b/plc4go/internal/plc4go/spi/transports/tcp/Transport.go
@@ -21,15 +21,13 @@ package tcp
import (
"bufio"
+ "github.com/apache/plc4x/plc4go/internal/plc4go/spi/transports"
+ "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
"net"
"net/url"
"regexp"
"strconv"
- "time"
-
- "github.com/apache/plc4x/plc4go/internal/plc4go/spi/transports"
- "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
- "github.com/pkg/errors"
)
type Transport struct {
@@ -153,22 +151,8 @@ func (m *TransportInstance) GetNumReadableBytes() (uint32, error) {
if m.reader == nil {
return 0, nil
}
- peekChan := make(chan bool)
- go func() {
- _, _ = m.reader.Peek(1)
- peekChan <- true
- }()
- timeout := time.NewTimer(time.Millisecond * 10)
- select {
- case <-peekChan:
- if !timeout.Stop() {
- <-timeout.C
- }
- return uint32(m.reader.Buffered()), nil
- case <-timeout.C:
- timeout.Stop()
- return 0, nil
- }
+ _, _ = m.reader.Peek(1)
+ return uint32(m.reader.Buffered()), nil
}
func (m *TransportInstance) PeekReadableBytes(numBytes uint32) ([]uint8, error) {
diff --git a/plc4go/internal/plc4go/spi/transports/test/Transport.go b/plc4go/internal/plc4go/spi/transports/test/Transport.go
index 4f2df24..1b04fd9 100644
--- a/plc4go/internal/plc4go/spi/transports/test/Transport.go
+++ b/plc4go/internal/plc4go/spi/transports/test/Transport.go
@@ -85,6 +85,7 @@ func (m *TransportInstance) Close() error {
func (m *TransportInstance) IsConnected() bool {
return m.connected
}
+
func (m *TransportInstance) GetNumReadableBytes() (uint32, error) {
readableBytes := len(m.readBuffer)
log.Trace().Msgf("return number of readable bytes %d", readableBytes)
diff --git a/plc4go/internal/plc4go/spi/transports/udp/Transport.go b/plc4go/internal/plc4go/spi/transports/udp/Transport.go
index ae46473..d950515 100644
--- a/plc4go/internal/plc4go/spi/transports/udp/Transport.go
+++ b/plc4go/internal/plc4go/spi/transports/udp/Transport.go
@@ -21,15 +21,13 @@ package udp
import (
"bufio"
+ "github.com/apache/plc4x/plc4go/internal/plc4go/spi/transports"
+ "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
+ "github.com/pkg/errors"
"net"
"net/url"
"regexp"
"strconv"
- "time"
-
- "github.com/apache/plc4x/plc4go/internal/plc4go/spi/transports"
- "github.com/apache/plc4x/plc4go/internal/plc4go/spi/utils"
- "github.com/pkg/errors"
)
type Transport struct {
@@ -182,22 +180,8 @@ func (m *TransportInstance) GetNumReadableBytes() (uint32, error) {
if m.reader == nil {
return 0, nil
}
- peekChan := make(chan bool)
- go func() {
- _, _ = m.reader.Peek(1)
- peekChan <- true
- }()
- timeout := time.NewTimer(time.Millisecond * 10)
- select {
- case <-peekChan:
- if !timeout.Stop() {
- <-timeout.C
- }
- return uint32(m.reader.Buffered()), nil
- case <-timeout.C:
- timeout.Stop()
- return 0, nil
- }
+ _, _ = m.reader.Peek(1)
+ return uint32(m.reader.Buffered()), nil
}
func (m *TransportInstance) PeekReadableBytes(numBytes uint32) ([]uint8, error) {