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


#include "mozilla/dom/DomSecurityIPCUtils.h"
#include "mozilla/dom/FetchIPCTypes.h"
#include "mozilla/dom/FeaturePolicyUtils.h"
#include "mozilla/dom/NavigationAPIIPCUtils.h"
#include "mozilla/dom/PropertyBagUtils.h"
#include "mozilla/dom/ReferrerInfoUtils.h"
#include "mozilla/ipc/URIUtils.h"
#include "mozilla/net/CacheInfoIPCTypes.h"
#include "mozilla/AntiTrackingIPCUtils.h"
#include "mozilla/net/ClassOfService.h"
#include "mozilla/net/WebrtcProxyConfig.h"

#include "ipc/IPCMessageUtils.h"
#include "ipc/IPCMessageUtilsSpecializations.h"
#include "nsIFile.h"
#include "mozilla/ipc/Endpoint.h"
#include "mozilla/ipc/ProtocolMessageUtils.h"
#include "mozilla/ipc/ProtocolUtils.h"
#include "mozilla/ipc/ShmemMessageUtils.h"
#include "mozilla/ipc/TaintingIPCUtils.h"


//-----------------------------------------------------------------------------
// Method definitions for the IPDL type |struct WebrtcProxyConfig|
//
namespace mozilla {
namespace net {
} // namespace net
} // namespace mozilla

namespace IPC {
auto ParamTraits<::mozilla::net::WebrtcProxyConfig>::Write(
        IPC::MessageWriter* aWriter,
        const paramType& aVar) -> void
{
    IPC::WriteParam(aWriter, (aVar).tabId());
    // Sentinel = 'tabId'
    (aWriter)->WriteSentinel(99156453);
    IPC::WriteParam(aWriter, (aVar).alpn());
    // Sentinel = 'alpn'
    (aWriter)->WriteSentinel(68813228);
    IPC::WriteParam(aWriter, (aVar).loadInfoArgs());
    // Sentinel = 'loadInfoArgs'
    (aWriter)->WriteSentinel(514000058);
    IPC::WriteParam(aWriter, (aVar).forceProxy());
    // Sentinel = 'forceProxy'
    (aWriter)->WriteSentinel(379454514);
}

auto ParamTraits<::mozilla::net::WebrtcProxyConfig>::Read(IPC::MessageReader* aReader) -> IPC::ReadResult<paramType>
{
    auto maybe___tabId = IPC::ReadParam<::mozilla::dom::TabId>(aReader);
    if (!maybe___tabId) {
        aReader->FatalError("Error deserializing 'tabId' (TabId) member of 'WebrtcProxyConfig'");
        return {};

    }
    auto& _tabId = *maybe___tabId;
    // Sentinel = 'tabId'
    if ((!((aReader)->ReadSentinel(99156453)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'tabId' (TabId) member of 'WebrtcProxyConfig'");
        return {};
    }
    auto maybe___alpn = IPC::ReadParam<::nsCString>(aReader);
    if (!maybe___alpn) {
        aReader->FatalError("Error deserializing 'alpn' (nsCString) member of 'WebrtcProxyConfig'");
        return {};

    }
    auto& _alpn = *maybe___alpn;
    // Sentinel = 'alpn'
    if ((!((aReader)->ReadSentinel(68813228)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'alpn' (nsCString) member of 'WebrtcProxyConfig'");
        return {};
    }
    auto maybe___loadInfoArgs = IPC::ReadParam<::mozilla::net::LoadInfoArgs>(aReader);
    if (!maybe___loadInfoArgs) {
        aReader->FatalError("Error deserializing 'loadInfoArgs' (LoadInfoArgs) member of 'WebrtcProxyConfig'");
        return {};

    }
    auto& _loadInfoArgs = *maybe___loadInfoArgs;
    // Sentinel = 'loadInfoArgs'
    if ((!((aReader)->ReadSentinel(514000058)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'loadInfoArgs' (LoadInfoArgs) member of 'WebrtcProxyConfig'");
        return {};
    }
    auto maybe___forceProxy = IPC::ReadParam<bool>(aReader);
    if (!maybe___forceProxy) {
        aReader->FatalError("Error deserializing 'forceProxy' (bool) member of 'WebrtcProxyConfig'");
        return {};

    }
    auto& _forceProxy = *maybe___forceProxy;
    // Sentinel = 'forceProxy'
    if ((!((aReader)->ReadSentinel(379454514)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'forceProxy' (bool) member of 'WebrtcProxyConfig'");
        return {};
    }
    IPC::ReadResult<paramType> result__{
            std::in_place,
            std::move(_tabId),
            std::move(_alpn),
            std::move(_loadInfoArgs),
            std::move(_forceProxy)};
    return result__;
}

} // namespace IPC
