#pragma once

#include "Socket.h"
#include "SocketInterface.h"

#include <memory>
#include <map>

class UnixSocketInterface : public ISocketInterface
{

public:

    UnixSocketInterface();

    virtual ~UnixSocketInterface() = default;

    static std::unique_ptr<UnixSocketInterface> Create();

    void InitializeSocket(const SocketPtr& socket) override;

    void Listen(const SocketPtr& socket) override;

    void Run(const SocketPtr& socket) override;

private:

    std::size_t mBufferSize { 0 };
};

using UnixSocketInterfacePtr = std::unique_ptr<UnixSocketInterface>;
