// Copyright 2018 The agentx authors
// Licensed under the LGPLv3 with static-linking exception.
// See LICENCE file for details.

package pdu

// Close defines the pdu close packet.
type Close struct {
	Reason Reason
}

// Type returns the pdu packet type.
func (c *Close) Type() Type {
	return TypeClose
}

// MarshalBinary returns the pdu packet as a slice of bytes.
func (c *Close) MarshalBinary() ([]byte, error) {
	return []byte{byte(c.Reason), 0x00, 0x00, 0x00}, nil
}

// UnmarshalBinary sets the packet structure from the provided slice of bytes.
func (c *Close) UnmarshalBinary(data []byte) error {
	c.Reason = Reason(data[0])
	return nil
}