blob: 5aa4788383899be47d92d37e7c97f7f2f6bce6c4 [file] [log] [blame]
// Copyright 2019 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// +build fuchsia
package fidl
import "syscall/zx"
// TODO(pascallouis): Delete all of this post migration.
const MessageHeaderSize int = 16
type Payload interface{}
func MarshalHeader(header *MessageHeader, data []byte) {
_, _, err := MarshalNew(header, data, nil)
if err != nil {
panic(err)
}
}
func UnmarshalHeader(data []byte, header *MessageHeader) error {
_, _, err := UnmarshalNew(data, nil, header)
return err
}
func MarshalMessage(header *MessageHeader, s Payload, data []byte, handles []zx.Handle) (int, int, error) {
return marshalHeaderThenMessage(header, toMessage(s), data, handles)
}
func UnmarshalMessage(data []byte, handles []zx.Handle, header *MessageHeader, s Payload) error {
return unmarshalHeaderThenMessage(data, handles, header, toMessage(s))
}
func (p *ChannelProxy) Send(ordinal uint32, req Payload) error {
return p.SendNew(ordinal, toMessage(req))
}
func (p *ChannelProxy) Recv(ordinal uint32, resp Payload, gen_ordinal ...uint32) error {
return p.RecvNew(ordinal, toMessage(resp), gen_ordinal...)
}
func (p *ChannelProxy) Call(ordinal uint32, req Payload, resp Payload) error {
return p.CallNew(ordinal, toMessage(req), resp.(Message))
}
func (p *SocketControlProxy) Send(ordinal uint32, req Payload) error {
return p.SendNew(ordinal, toMessage(req))
}
func (p *SocketControlProxy) Recv(ordinal uint32, resp Payload, gen_ordinal ...uint32) error {
return p.RecvNew(ordinal, toMessage(resp), gen_ordinal...)
}
func (p *SocketControlProxy) Call(ordinal uint32, req Payload, resp Payload) error {
return p.CallNew(ordinal, toMessage(req), toMessage(resp))
}
func toMessage(s Payload) Message {
var msg Message
if s != nil {
msg = s.(Message)
}
return msg
}