//
// Automatically generated by ipdlc.
// Edit at your own risk
//

#ifndef WebrtcProxyConfig_h
#define WebrtcProxyConfig_h

#include "mozilla/Attributes.h"
#include "IPCMessageStart.h"
#include "mozilla/RefPtr.h"
#include "nsString.h"
#include "nsTArray.h"
#include "nsTHashtable.h"
#include "mozilla/MozPromise.h"
#include "mozilla/OperatorNewExtensions.h"
#include "mozilla/UniquePtr.h"
#include "mozilla/ipc/ByteBuf.h"
#include "mozilla/ipc/FileDescriptor.h"
#include "mozilla/ipc/IPCForwards.h"
#include "mozilla/ipc/Shmem.h"

// Headers for typedefs
#include "mozilla/dom/ipc/IdType.h"
#include "mozilla/ipc/IPDLStructMember.h"
#include "mozilla/net/NeckoChannelParams.h"


//-----------------------------------------------------------------------------
// Declaration of the IPDL type |struct WebrtcProxyConfig|
//
namespace mozilla {
namespace net {
class WebrtcProxyConfig final
{
private:
    typedef ::mozilla::dom::TabId TabId;
    typedef ::nsCString nsCString;
    typedef ::mozilla::net::LoadInfoArgs LoadInfoArgs;

public:
#ifdef __clang__
#  pragma clang diagnostic push
#  if __has_warning("-Wdefaulted-function-deleted")
#    pragma clang diagnostic ignored "-Wdefaulted-function-deleted"
#  endif
#endif
    WebrtcProxyConfig() = default;
#ifdef __clang__
#  pragma clang diagnostic pop
#endif

    MOZ_IMPLICIT WebrtcProxyConfig(
            const TabId& _tabId,
            const nsCString& _alpn,
            const LoadInfoArgs& _loadInfoArgs,
            const bool& _forceProxy) :
        tabId_(_tabId),
        alpn_(_alpn),
        loadInfoArgs_(_loadInfoArgs),
        forceProxy_(_forceProxy)
    {
    }

    MOZ_IMPLICIT WebrtcProxyConfig(
            TabId&& _tabId,
            nsCString&& _alpn,
            LoadInfoArgs&& _loadInfoArgs,
            bool&& _forceProxy) :
        tabId_(std::move(_tabId)),
        alpn_(std::move(_alpn)),
        loadInfoArgs_(std::move(_loadInfoArgs)),
        forceProxy_(std::move(_forceProxy))
    {
    }

    TabId&
    tabId()
    {
        return tabId_;
    }
    const TabId&
    tabId() const
    {
        return tabId_;
    }

    nsCString&
    alpn()
    {
        return alpn_;
    }
    const nsCString&
    alpn() const
    {
        return alpn_;
    }

    LoadInfoArgs&
    loadInfoArgs()
    {
        return loadInfoArgs_;
    }
    const LoadInfoArgs&
    loadInfoArgs() const
    {
        return loadInfoArgs_;
    }

    bool&
    forceProxy()
    {
        return forceProxy_;
    }
    const bool&
    forceProxy() const
    {
        return forceProxy_;
    }

private:
    ::mozilla::ipc::IPDLStructMember<TabId> tabId_;
    ::mozilla::ipc::IPDLStructMember<nsCString> alpn_;
    ::mozilla::ipc::IPDLStructMember<LoadInfoArgs> loadInfoArgs_;
    ::mozilla::ipc::IPDLStructMember<bool> forceProxy_;
};
} // namespace net
} // namespace mozilla

namespace IPC {
template<>
struct ParamTraits <::mozilla::net::WebrtcProxyConfig>
{
    typedef ::mozilla::net::WebrtcProxyConfig paramType;
    static void
    Write(
            IPC::MessageWriter* aWriter,
            const paramType& aVar);
    static IPC::ReadResult<paramType>
    Read(IPC::MessageReader* aReader);
};
} // namespace IPC

#endif // ifndef WebrtcProxyConfig_h
