mirror of
https://github.com/jwetzell/osc-go.git
synced 2026-07-26 10:28:42 +00:00
move package to root level
This commit is contained in:
+58
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user