1<?php
2
3/**
4 * This file is part of the FreeDSx LDAP package.
5 *
6 * (c) Chad Sikorra <Chad.Sikorra@gmail.com>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11
12namespace FreeDSx\Ldap\Server;
13
14use FreeDSx\Ldap\Exception\RuntimeException;
15use FreeDSx\Ldap\Server\RequestHandler\PagingHandlerInterface;
16use FreeDSx\Ldap\Server\RequestHandler\RequestHandlerInterface;
17use FreeDSx\Ldap\Server\RequestHandler\RootDseHandlerInterface;
18
19/**
20 * Responsible for instantiating classes needed by the core server logic.
21 *
22 * @author Chad Sikorra <Chad.Sikorra@gmail.com>
23 */
24interface HandlerFactoryInterface
25{
26    /**
27     * @return RequestHandlerInterface
28     * @throws RuntimeException
29     */
30    public function makeRequestHandler(): RequestHandlerInterface;
31
32    /**
33     * @return RootDseHandlerInterface|null
34     * @throws RuntimeException
35     */
36    public function makeRootDseHandler(): ?RootDseHandlerInterface;
37
38    /**
39     * @return PagingHandlerInterface|null
40     * @throws RuntimeException
41     */
42    public function makePagingHandler(): ?PagingHandlerInterface;
43}
44