You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by sr...@apache.org on 2022/08/05 11:56:12 UTC

[plc4x] 01/02: refactor(plc4go): added a IsAPlcMessage() bool method to plc_message

This is an automated email from the ASF dual-hosted git repository.

sruehl pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 65adaaaa38e300e9af83d32c8f0ec92253c0bcb7
Author: Sebastian Rühl <sr...@apache.org>
AuthorDate: Fri Aug 5 13:21:09 2022 +0200

    refactor(plc4go): added a IsAPlcMessage() bool method to plc_message
---
 plc4go/internal/spi/model/DefaultBrowseRequest.go | 15 ++++++++-------
 plc4go/internal/spi/model/DefaultRequest.go       |  4 ++++
 plc4go/internal/spi/model/DefaultResponse.go      |  4 ++++
 plc4go/pkg/api/model/plc_message.go               |  1 +
 plc4go/tools/plc4xbrowser/commands.go             |  3 +++
 plc4go/tools/plc4xbrowser/config.go               |  2 ++
 plc4go/tools/plc4xbrowser/ui.go                   |  1 +
 7 files changed, 23 insertions(+), 7 deletions(-)

diff --git a/plc4go/internal/spi/model/DefaultBrowseRequest.go b/plc4go/internal/spi/model/DefaultBrowseRequest.go
index f80a13917..03a253857 100644
--- a/plc4go/internal/spi/model/DefaultBrowseRequest.go
+++ b/plc4go/internal/spi/model/DefaultBrowseRequest.go
@@ -50,10 +50,18 @@ func (m *DefaultPlcBrowseRequestBuilder) Build() (model.PlcBrowseRequest, error)
 }
 
 type DefaultPlcBrowseRequest struct {
+	DefaultRequest
 	queries map[string]string
 	browser spi.PlcBrowser
 }
 
+func NewDefaultPlcBrowseResponse(request model.PlcBrowseRequest, results map[string][]model.PlcBrowseQueryResult) DefaultPlcBrowseResponse {
+	return DefaultPlcBrowseResponse{
+		request: request,
+		results: results,
+	}
+}
+
 func (d DefaultPlcBrowseRequest) GetQueryNames() []string {
 	var queryNames []string
 	for queryName := range d.queries {
@@ -79,13 +87,6 @@ type DefaultPlcBrowseResponse struct {
 	results map[string][]model.PlcBrowseQueryResult
 }
 
-func NewDefaultPlcBrowseResponse(request model.PlcBrowseRequest, results map[string][]model.PlcBrowseQueryResult) DefaultPlcBrowseResponse {
-	return DefaultPlcBrowseResponse{
-		request: request,
-		results: results,
-	}
-}
-
 func (d DefaultPlcBrowseResponse) GetRequest() model.PlcBrowseRequest {
 	return d.request
 }
diff --git a/plc4go/internal/spi/model/DefaultRequest.go b/plc4go/internal/spi/model/DefaultRequest.go
index 27eae24c5..ce1993b4d 100644
--- a/plc4go/internal/spi/model/DefaultRequest.go
+++ b/plc4go/internal/spi/model/DefaultRequest.go
@@ -26,6 +26,10 @@ type DefaultRequest struct {
 	fieldNames []string
 }
 
+func (m DefaultRequest) IsAPlcMessage() bool {
+	return true
+}
+
 func NewDefaultRequest(Fields map[string]model.PlcField, FieldNames []string) DefaultRequest {
 	return DefaultRequest{Fields, FieldNames}
 }
diff --git a/plc4go/internal/spi/model/DefaultResponse.go b/plc4go/internal/spi/model/DefaultResponse.go
index 530c8acdf..2d3ff5666 100644
--- a/plc4go/internal/spi/model/DefaultResponse.go
+++ b/plc4go/internal/spi/model/DefaultResponse.go
@@ -25,6 +25,10 @@ type DefaultResponse struct {
 	responseCodes map[string]model.PlcResponseCode
 }
 
+func (m DefaultResponse) IsAPlcMessage() bool {
+	return true
+}
+
 func (m DefaultResponse) GetResponseCode(name string) model.PlcResponseCode {
 	return m.responseCodes[name]
 }
diff --git a/plc4go/pkg/api/model/plc_message.go b/plc4go/pkg/api/model/plc_message.go
index 7242f0e4b..834323281 100644
--- a/plc4go/pkg/api/model/plc_message.go
+++ b/plc4go/pkg/api/model/plc_message.go
@@ -20,4 +20,5 @@
 package model
 
 type PlcMessage interface {
+	IsAPlcMessage() bool
 }
diff --git a/plc4go/tools/plc4xbrowser/commands.go b/plc4go/tools/plc4xbrowser/commands.go
index 6a77134b4..7afb90fe2 100644
--- a/plc4go/tools/plc4xbrowser/commands.go
+++ b/plc4go/tools/plc4xbrowser/commands.go
@@ -29,6 +29,7 @@ import (
 	"github.com/rs/zerolog/log"
 	"net/url"
 	"strings"
+	"time"
 )
 
 const rootCommandIndicator = "rootCommand"
@@ -156,7 +157,9 @@ var rootCommand = Command{
 						AddEventQuery("subscriptionField", split[1]).
 						AddItemHandler(func(event model.PlcSubscriptionEvent) {
 							messagesReceived++
+							start := time.Now()
 							_, _ = fmt.Fprintf(messageOutput, "[\"%d\"]\n%s[\"\"]", messagesReceived, event)
+							plc4xBrowserLog.Debug().Msgf("write took %f seconds", time.Now().Sub(start).Seconds())
 						}).
 						Build()
 					if err != nil {
diff --git a/plc4go/tools/plc4xbrowser/config.go b/plc4go/tools/plc4xbrowser/config.go
index 13313402f..24da0242c 100644
--- a/plc4go/tools/plc4xbrowser/config.go
+++ b/plc4go/tools/plc4xbrowser/config.go
@@ -41,6 +41,8 @@ type Config struct {
 	AutoRegisterDrivers []string  `yaml:"auto_register_driver"`
 	LastUpdated         time.Time `yaml:"last_updated"`
 	LogLevel            string    `yaml:"log_level"`
+	MaxConsoleLines     int       `yaml:"max_console_lines"`
+	MaxOutputLines      int       `yaml:"max_output_lines"`
 }
 
 func init() {
diff --git a/plc4go/tools/plc4xbrowser/ui.go b/plc4go/tools/plc4xbrowser/ui.go
index 39ac34fdf..e9cad8fdf 100644
--- a/plc4go/tools/plc4xbrowser/ui.go
+++ b/plc4go/tools/plc4xbrowser/ui.go
@@ -248,6 +248,7 @@ func buildOutputArea(newPrimitive func(text string) tview.Primitive, application
 		{
 			consoleView := tview.NewTextView().
 				SetDynamicColors(true).
+				SetMaxLines(config.MaxConsoleLines).
 				SetChangedFunc(func() {
 					application.Draw()
 				})