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

package pdu

import (
	"github.com/posteo/go-agentx/marshaler"
)

// Open defines a pdu open packet.
type Open struct {
	Timeout     Timeout
	ID          ObjectIdentifier
	Description OctetString
}

// Type returns the pdu packet type.
func (o *Open) Type() Type {
	return TypeOpen
}

// MarshalBinary returns the pdu packet as a slice of bytes.
func (o *Open) MarshalBinary() ([]byte, error) {
	combined := marshaler.NewMulti(&o.Timeout, &o.ID, &o.Description)

	combinedBytes, err := combined.MarshalBinary()
	if err != nil {
		return nil, err
	}

	return combinedBytes, nil
}

// UnmarshalBinary sets the packet structure from the provided slice of bytes.
func (o *Open) UnmarshalBinary(data []byte) error {
	return nil
}