1<?php
2/**
3 * This file is part of the FreeDSx LDAP package.
4 *
5 * (c) Chad Sikorra <Chad.Sikorra@gmail.com>
6 *
7 * For the full copyright and license information, please view the LICENSE
8 * file that was distributed with this source code.
9 */
10
11namespace FreeDSx\Ldap\Protocol;
12
13use FreeDSx\Asn1\Type\AbstractType;
14use FreeDSx\Ldap\Control\Control;
15use FreeDSx\Ldap\Operation\Request\RequestInterface;
16
17/**
18 * The LDAP Message envelope PDU. This represents a message as a request to LDAP.
19 *
20 * @see LdapMessage
21 * @author Chad Sikorra <Chad.Sikorra@gmail.com>
22 */
23class LdapMessageRequest extends LdapMessage
24{
25    /**
26     * @var RequestInterface
27     */
28    protected $request;
29
30    /**
31     * @param int $messageId
32     * @param RequestInterface $request
33     * @param Control ...$controls
34     */
35    public function __construct(int $messageId, RequestInterface $request, Control ...$controls)
36    {
37        $this->request = $request;
38        parent::__construct($messageId, ...$controls);
39    }
40
41    /**
42     * @return RequestInterface
43     */
44    public function getRequest(): RequestInterface
45    {
46        return $this->request;
47    }
48
49    /**
50     * @return AbstractType
51     */
52    protected function getOperationAsn1(): AbstractType
53    {
54        return $this->request->toAsn1();
55    }
56}
57