aboutsummaryrefslogtreecommitdiffstats
path: root/api/trace.go
diff options
context:
space:
mode:
Diffstat (limited to 'api/trace.go')
-rw-r--r--api/trace.go46
1 files changed, 46 insertions, 0 deletions
diff --git a/api/trace.go b/api/trace.go
new file mode 100644
index 0000000..4ff46e8
--- /dev/null
+++ b/api/trace.go
@@ -0,0 +1,46 @@
+// Copyright (c) 2021 Cisco and/or its affiliates.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at:
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package api
+
+import (
+ "time"
+)
+
+// Trace gives access to the API trace tool, capturing outcoming and incoming messages
+// to and from GoVPP.
+type Trace interface {
+ // Enable allows to enable or disable API trace for a connection.
+ Enable(enable bool)
+
+ // GetRecords retrieves all messages collected (from all channels if they are used)
+ // since the point the trace was enabled or cleared.
+ GetRecords() []*Record
+
+ // GetRecordsForChannel retrieves messages collected by the given channel since
+ // the point the trace was enabled or cleared.
+ GetRecordsForChannel(chId uint16) []*Record
+
+ // Clear erases messages captured so far.
+ Clear()
+}
+
+// Record contains essential information about traced message, its timestamp and whether
+// the message was received or sent
+type Record struct {
+ Message Message
+ Timestamp time.Time
+ IsReceived bool
+ ChannelID uint16
+}