7
7
"github.com/google/uuid"
8
8
"github.com/quan-to/slog"
9
9
"github.com/racerxdl/go.fifo"
10
- "github.com/racerxdl/qo100-dedrift/metrics"
11
10
"net"
12
11
"runtime"
13
12
"strings"
@@ -88,10 +87,27 @@ func (server *Server) Stop() {
88
87
}
89
88
}
90
89
90
+ func (server * Server ) I16Broadcast (data []int16 ) {
91
+ if server .bufferFifo .Len ()+ len (data ) > maxFifoLength {
92
+ // Discard data
93
+ _ = server .bufferFifo .NextN (len (data ))
94
+ }
95
+
96
+ iqBytes := make ([]byte , len (data ))
97
+ for i := 0 ; i < len (data )/ 2 ; i ++ {
98
+ rv := data [i * 2 ] >> 8
99
+ iv := data [i * 2 + 1 ] >> 8
100
+ iqBytes [i * 2 ] = uint8 (rv )
101
+ iqBytes [i * 2 + 1 ] = uint8 (iv )
102
+ }
103
+
104
+ server .bufferFifo .Add (iqBytes )
105
+ }
106
+
91
107
func (server * Server ) ComplexBroadcast (data []complex64 ) {
92
- if server .bufferFifo .Len () > maxFifoLength {
93
- log . Error ( "TX Fifo full!" )
94
- return
108
+ if server .bufferFifo .Len ()+ len ( data ) > maxFifoLength {
109
+ // Discard data
110
+ _ = server . bufferFifo . NextN ( len ( data ))
95
111
}
96
112
97
113
iqBytes := make ([]byte , len (data )* 2 )
@@ -134,8 +150,7 @@ func (server *Server) broadcast(data []byte) {
134
150
payload := data [s :e ]
135
151
136
152
for _ , v := range server .connections {
137
- n , _ := v .conn .Write (payload )
138
- metrics .BytesOut .Add (float64 (n ))
153
+ _ , _ = v .conn .Write (payload )
139
154
}
140
155
}
141
156
server .connectionLock .Unlock ()
@@ -229,9 +244,6 @@ func (server *Server) handleRequest(conn net.Conn) {
229
244
server .onConnectCb (session .id , session .conn .RemoteAddr ().String ())
230
245
}
231
246
232
- metrics .TotalConnections .Inc ()
233
- metrics .Connections .Inc ()
234
-
235
247
for running {
236
248
_ = conn .SetReadDeadline (time .Now ().Add (defaultReadTimeout ))
237
249
n , err := conn .Read (buffer )
@@ -267,7 +279,6 @@ func (server *Server) handleRequest(conn net.Conn) {
267
279
continue
268
280
}
269
281
server .handlePacket (session , cmd )
270
- metrics .BytesIn .Add (float64 (n ))
271
282
}
272
283
}
273
284
server .connectionLock .Lock ()
@@ -280,6 +291,5 @@ func (server *Server) handleRequest(conn net.Conn) {
280
291
server .connectionLock .Unlock ()
281
292
_ = conn .Close ()
282
293
283
- metrics .Connections .Dec ()
284
294
clog .Info ("Connection closed." )
285
295
}
0 commit comments