Skip to content

Commit 65218a6

Browse files
committed
refactor: replace OnMessage with ChanWriter for improved message handling
1 parent a50aa86 commit 65218a6

File tree

1 file changed

+11
-13
lines changed

1 file changed

+11
-13
lines changed

serialport.go

+11-13
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@ type serport struct {
6262
//bufferwatcher *BufferflowDummypause
6363
bufferwatcher Bufferflow
6464

65-
OnMessage func([]byte)
66-
OnClose func(*serport)
65+
ChanWriter ChanWriter
66+
OnClose func(*serport)
6767
}
6868

6969
// SpPortMessage is the serial port message
@@ -92,7 +92,7 @@ func (p *serport) reader(buftype string) {
9292
if p.isClosing.Load() {
9393
strmsg := "Shutting down reader on " + p.portConf.Name
9494
log.Println(strmsg)
95-
p.OnMessage([]byte(strmsg))
95+
p.ChanWriter.Write.Write([]byte(strmsg))
9696
break
9797
}
9898

@@ -146,14 +146,14 @@ func (p *serport) reader(buftype string) {
146146
if err == io.EOF || err == io.ErrUnexpectedEOF {
147147
// hit end of file
148148
log.Println("Hit end of file on serial port")
149-
p.OnMessage([]byte("{\"Cmd\":\"OpenFail\",\"Desc\":\"Got EOF (End of File) on port which usually means another app other than Serial Port JSON Server is locking your port. " + err.Error() + "\",\"Port\":\"" + p.portConf.Name + "\",\"Baud\":" + strconv.Itoa(p.portConf.Baud) + "}"))
149+
p.ChanWriter.Write([]byte("{\"Cmd\":\"OpenFail\",\"Desc\":\"Got EOF (End of File) on port which usually means another app other than Serial Port JSON Server is locking your port. " + err.Error() + "\",\"Port\":\"" + p.portConf.Name + "\",\"Baud\":" + strconv.Itoa(p.portConf.Baud) + "}"))
150150

151151
}
152152

153153
if err != nil {
154154
log.Println(err)
155-
p.OnMessage([]byte("Error reading on " + p.portConf.Name + " " + err.Error() + " Closing port."))
156-
p.OnMessage([]byte("{\"Cmd\":\"OpenFail\",\"Desc\":\"Got error reading on port. " + err.Error() + "\",\"Port\":\"" + p.portConf.Name + "\",\"Baud\":" + strconv.Itoa(p.portConf.Baud) + "}"))
155+
p.ChanWriter.Write([]byte("Error reading on " + p.portConf.Name + " " + err.Error() + " Closing port."))
156+
p.ChanWriter.Write([]byte("{\"Cmd\":\"OpenFail\",\"Desc\":\"Got error reading on port. " + err.Error() + "\",\"Port\":\"" + p.portConf.Name + "\",\"Baud\":" + strconv.Itoa(p.portConf.Baud) + "}"))
157157
p.isClosingDueToError = true
158158
break
159159
}
@@ -211,7 +211,7 @@ func (p *serport) writerBuffered() {
211211
}
212212
msgstr := "writerBuffered just got closed. make sure you make a new one. port:" + p.portConf.Name
213213
log.Println(msgstr)
214-
p.OnMessage([]byte(msgstr))
214+
p.ChanWriter.Write([]byte(msgstr))
215215
}
216216

217217
// this method runs as its own thread because it's instantiated
@@ -232,13 +232,13 @@ func (p *serport) writerNoBuf() {
232232
if err != nil {
233233
errstr := "Error writing to " + p.portConf.Name + " " + err.Error() + " Closing port."
234234
log.Print(errstr)
235-
p.OnMessage([]byte(errstr))
235+
p.ChanWriter.Write([]byte(errstr))
236236
break
237237
}
238238
}
239239
msgstr := "Shutting down writer on " + p.portConf.Name
240240
log.Println(msgstr)
241-
p.OnMessage([]byte(msgstr))
241+
p.ChanWriter.Write([]byte(msgstr))
242242

243243
p.portIo.Close()
244244

@@ -279,7 +279,7 @@ func (p *serport) writerRaw() {
279279
}
280280
msgstr := "writerRaw just got closed. make sure you make a new one. port:" + p.portConf.Name
281281
log.Println(msgstr)
282-
p.OnMessage([]byte(msgstr))
282+
p.ChanWriter.Write([]byte(msgstr))
283283
}
284284

285285
// FIXME: move this into the `hub.go` file
@@ -323,11 +323,9 @@ func (h *hub) spHandlerOpen(portname string, baud int, buftype string) {
323323
portIo: sp,
324324
portName: portname,
325325
BufferType: buftype,
326+
ChanWriter: ChanWriter{h.broadcastSys},
326327
}
327328

328-
p.OnMessage = func(msg []byte) {
329-
h.broadcastSys <- msg
330-
}
331329
p.OnClose = func(port *serport) {
332330
h.serialPortList.MarkPortAsClosed(p.portName)
333331
h.serialPortList.List()

0 commit comments

Comments
 (0)