Hi All,
I am learning golang and in the process i am trying to decode the buffer
sent from a C client to a structure in golang.
however that fails , please guide me through the process. The communication
uses UNIX domain socket, between a c program and a golang process.
C structure.
struct error_notify_msg_t {
int type;
char str[384];
char name[64];
char id[256];
char ip[60];
}
Golang Structure.
type ErrorNotifyMsg struct {
//Type ...
Type uint32
//Str ...
Str [384]string
//Name ...
Name [64]string
//ID ...
ID [256]string
//Ip ...
IP [60]string
}
func ReadErrorMsg() {
//var n int
buf := make([]byte, 1024)
for {
n, err := ConnErr.Read(buf[:])
if err != nil {
return
}
data := buf[0:n]
Log.InfoS("DecodeErrorMsg", log.KV{"Bytes read :": n})
msg, err := DecodeErrorMsg(data)
if msg != nil {
ErrNotify <- *msg
}
}
}
var ourEnd = binary.LittleEndian
func DecodeErrorMsg(val []byte) ErrorNotifyMsg {
ntfy := ErrorNotifyMsg{}
buf := bytes.NewBuffer(val)
buf.Next(1)
_ = binary.Read(buf, ourEnd, &ntfy.Type)
Log.InfoS("DecodeErrorMsg", log.KV{"ntfy.Type": ntfy.Type})
buf.Next(384)
_ = binary.Read(buf, ourEnd, &ntfy.Str)
Log.InfoS("DecodeErrorMsg", log.KV{"ntfy.Str": ntfy.Str})
buf.Next(64)
_ = binary.Read(buf, ourEnd, &ntfy.Name)
Log.InfoS("DecodeErrorMsg", log.KV{"ntfy.Name": ntfy.Name})
buf.Next(256)
_ = binary.Read(buf, ourEnd, &ntfy.ID)
Log.InfoS("DecodeErrorMsg", log.KV{"ntfy.ID": ntfy.ID})
buf.Next(60)
_ = binary.Read(buf, ourEnd, &ntfy.IP)
Log.InfoS("DecodeErrorMsg", log.KV{"ntfy.IP": ntfy.IP})
return ntfy
}
Thanks,
Naveen
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.