move package to root level

This commit is contained in:
2024-12-26 14:57:19 -06:00
parent 46ea24d25e
commit 0928352a57
6 changed files with 0 additions and 0 deletions
+58
View File
@@ -0,0 +1,58 @@
package osc
import (
"errors"
"strings"
)
func (m *OSCMessage) ToBytes() []byte {
//TODO(jwetzell): add error handling
oscBuffer := []byte{}
oscBuffer = append(oscBuffer, stringToOSCBytes(m.Address)...)
var sb strings.Builder
sb.WriteString(",")
for _, arg := range m.Args {
sb.WriteString(arg.Type)
}
oscBuffer = append(oscBuffer, stringToOSCBytes(sb.String())...)
oscBuffer = append(oscBuffer, argsToBuffer(m.Args)...)
return oscBuffer
}
func MessageFromBytes(bytes []byte) (OSCMessage, error) {
address, typeAndArgBytes := readOSCString(bytes)
if address[0] != 47 {
return OSCMessage{}, errors.New("OSC Message address must start with /")
}
oscMessage := OSCMessage{
Address: address,
Args: []OSCArg{},
}
typeString, argBytes := readOSCString(typeAndArgBytes)
for index, oscType := range typeString {
if index == 0 {
if oscType != ',' {
return OSCMessage{}, errors.New("type string is malformed")
}
} else {
oscArg, remainingBytes, error := readOSCArg(argBytes, string(oscType))
if error != nil {
return oscMessage, error
}
argBytes = remainingBytes
oscMessage.Args = append(oscMessage.Args, oscArg)
}
}
return oscMessage, nil
}