| // 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 |
| } |