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


#include "mozilla/dom/PBackgroundSDBConnectionParent.h"
#include "mozilla/dom/PBackgroundSDBConnectionChild.h"
#include "mozilla/dom/PBackgroundSDBRequest.h"
#include "mozilla/dom/PBackgroundSDBRequestParent.h"
#include "mozilla/dom/PBackgroundSDBRequestChild.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"

namespace mozilla {
namespace dom {
namespace PBackgroundSDBRequest {

nsresult
CreateEndpoints(
        mozilla::ipc::EndpointProcInfo aParentDestInfo,
        mozilla::ipc::EndpointProcInfo aChildDestInfo,
        mozilla::ipc::Endpoint<::mozilla::dom::PBackgroundSDBRequestParent>* aParent,
        mozilla::ipc::Endpoint<::mozilla::dom::PBackgroundSDBRequestChild>* aChild)
{
    return mozilla::ipc::CreateEndpoints(
        mozilla::ipc::PrivateIPDLInterface(),
        aParentDestInfo, aChildDestInfo, aParent, aChild);
}
mozilla::UniquePtr<IPC::Message>
Msg___delete__(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Msg___delete____ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::NOT_REPLY));
}
mozilla::UniquePtr<IPC::Message>
Reply___delete__(IPC::Message::routeid_t routingId)
{
    return IPC::Message::IPDLMessage(routingId, Reply___delete____ID, 0, IPC::Message::HeaderFlags(IPC::Message::NOT_NESTED, IPC::Message::NORMAL_PRIORITY, IPC::Message::COMPRESSION_NONE, IPC::Message::EAGER_SEND, IPC::Message::NOT_CONSTRUCTOR, IPC::Message::ASYNC, IPC::Message::REPLY));
}

} // namespace PBackgroundSDBRequest
} // namespace dom
} // namespace mozilla

//-----------------------------------------------------------------------------
// Method definitions for the IPDL type |struct SDBRequestOpenResponse|
//
namespace mozilla {
namespace dom {
} // namespace dom
} // namespace mozilla

namespace IPC {
auto ParamTraits<::mozilla::dom::SDBRequestOpenResponse>::Write(
        IPC::MessageWriter* aWriter,
        const paramType& aVar) -> void
{
}

auto ParamTraits<::mozilla::dom::SDBRequestOpenResponse>::Read(IPC::MessageReader* aReader) -> IPC::ReadResult<paramType>
{
    IPC::ReadResult<paramType> result__{std::in_place};
    return result__;
}

} // namespace IPC

//-----------------------------------------------------------------------------
// Method definitions for the IPDL type |struct SDBRequestSeekResponse|
//
namespace mozilla {
namespace dom {
} // namespace dom
} // namespace mozilla

namespace IPC {
auto ParamTraits<::mozilla::dom::SDBRequestSeekResponse>::Write(
        IPC::MessageWriter* aWriter,
        const paramType& aVar) -> void
{
}

auto ParamTraits<::mozilla::dom::SDBRequestSeekResponse>::Read(IPC::MessageReader* aReader) -> IPC::ReadResult<paramType>
{
    IPC::ReadResult<paramType> result__{std::in_place};
    return result__;
}

} // namespace IPC

//-----------------------------------------------------------------------------
// Method definitions for the IPDL type |struct SDBRequestReadResponse|
//
namespace mozilla {
namespace dom {
} // namespace dom
} // namespace mozilla

namespace IPC {
auto ParamTraits<::mozilla::dom::SDBRequestReadResponse>::Write(
        IPC::MessageWriter* aWriter,
        const paramType& aVar) -> void
{
    IPC::WriteParam(aWriter, (aVar).data());
    // Sentinel = 'data'
    (aWriter)->WriteSentinel(67109275);
}

auto ParamTraits<::mozilla::dom::SDBRequestReadResponse>::Read(IPC::MessageReader* aReader) -> IPC::ReadResult<paramType>
{
    auto maybe___data = IPC::ReadParam<::nsCString>(aReader);
    if (!maybe___data) {
        aReader->FatalError("Error deserializing 'data' (nsCString) member of 'SDBRequestReadResponse'");
        return {};

    }
    auto& _data = *maybe___data;
    // Sentinel = 'data'
    if ((!((aReader)->ReadSentinel(67109275)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'data' (nsCString) member of 'SDBRequestReadResponse'");
        return {};
    }
    IPC::ReadResult<paramType> result__{
            std::in_place,
            std::move(_data)};
    return result__;
}

} // namespace IPC

//-----------------------------------------------------------------------------
// Method definitions for the IPDL type |struct SDBRequestWriteResponse|
//
namespace mozilla {
namespace dom {
} // namespace dom
} // namespace mozilla

namespace IPC {
auto ParamTraits<::mozilla::dom::SDBRequestWriteResponse>::Write(
        IPC::MessageWriter* aWriter,
        const paramType& aVar) -> void
{
}

auto ParamTraits<::mozilla::dom::SDBRequestWriteResponse>::Read(IPC::MessageReader* aReader) -> IPC::ReadResult<paramType>
{
    IPC::ReadResult<paramType> result__{std::in_place};
    return result__;
}

} // namespace IPC

//-----------------------------------------------------------------------------
// Method definitions for the IPDL type |struct SDBRequestCloseResponse|
//
namespace mozilla {
namespace dom {
} // namespace dom
} // namespace mozilla

namespace IPC {
auto ParamTraits<::mozilla::dom::SDBRequestCloseResponse>::Write(
        IPC::MessageWriter* aWriter,
        const paramType& aVar) -> void
{
}

auto ParamTraits<::mozilla::dom::SDBRequestCloseResponse>::Read(IPC::MessageReader* aReader) -> IPC::ReadResult<paramType>
{
    IPC::ReadResult<paramType> result__{std::in_place};
    return result__;
}

} // namespace IPC

//-----------------------------------------------------------------------------
// Method definitions for the IPDL type |union SDBRequestResponse|
//
namespace mozilla {
namespace dom {
auto SDBRequestResponse::MaybeDestroy() -> void
{
    if ((mType) == (T__None)) {
        return;
    }
    switch (mType) {
    case Tnsresult:
        {
            (ptr_nsresult())->~nsresult__tdef();
            break;
        }
    case TSDBRequestOpenResponse:
        {
            (ptr_SDBRequestOpenResponse())->~SDBRequestOpenResponse__tdef();
            break;
        }
    case TSDBRequestSeekResponse:
        {
            (ptr_SDBRequestSeekResponse())->~SDBRequestSeekResponse__tdef();
            break;
        }
    case TSDBRequestReadResponse:
        {
            (ptr_SDBRequestReadResponse())->~SDBRequestReadResponse__tdef();
            break;
        }
    case TSDBRequestWriteResponse:
        {
            (ptr_SDBRequestWriteResponse())->~SDBRequestWriteResponse__tdef();
            break;
        }
    case TSDBRequestCloseResponse:
        {
            (ptr_SDBRequestCloseResponse())->~SDBRequestCloseResponse__tdef();
            break;
        }
    default:
        {
            mozilla::ipc::LogicError("not reached");
            break;
        }
    }
}

MOZ_IMPLICIT SDBRequestResponse::SDBRequestResponse(const nsresult& aOther)
{
    new (mozilla::KnownNotNull, ptr_nsresult()) nsresult(aOther);
    mType = Tnsresult;
}

MOZ_IMPLICIT SDBRequestResponse::SDBRequestResponse(nsresult&& aOther)
{
    new (mozilla::KnownNotNull, ptr_nsresult()) nsresult(std::move(aOther));
    mType = Tnsresult;
}

MOZ_IMPLICIT SDBRequestResponse::SDBRequestResponse(const SDBRequestOpenResponse& aOther)
{
    new (mozilla::KnownNotNull, ptr_SDBRequestOpenResponse()) SDBRequestOpenResponse(aOther);
    mType = TSDBRequestOpenResponse;
}

MOZ_IMPLICIT SDBRequestResponse::SDBRequestResponse(SDBRequestOpenResponse&& aOther)
{
    new (mozilla::KnownNotNull, ptr_SDBRequestOpenResponse()) SDBRequestOpenResponse(std::move(aOther));
    mType = TSDBRequestOpenResponse;
}

MOZ_IMPLICIT SDBRequestResponse::SDBRequestResponse(const SDBRequestSeekResponse& aOther)
{
    new (mozilla::KnownNotNull, ptr_SDBRequestSeekResponse()) SDBRequestSeekResponse(aOther);
    mType = TSDBRequestSeekResponse;
}

MOZ_IMPLICIT SDBRequestResponse::SDBRequestResponse(SDBRequestSeekResponse&& aOther)
{
    new (mozilla::KnownNotNull, ptr_SDBRequestSeekResponse()) SDBRequestSeekResponse(std::move(aOther));
    mType = TSDBRequestSeekResponse;
}

MOZ_IMPLICIT SDBRequestResponse::SDBRequestResponse(const SDBRequestReadResponse& aOther)
{
    new (mozilla::KnownNotNull, ptr_SDBRequestReadResponse()) SDBRequestReadResponse(aOther);
    mType = TSDBRequestReadResponse;
}

MOZ_IMPLICIT SDBRequestResponse::SDBRequestResponse(SDBRequestReadResponse&& aOther)
{
    new (mozilla::KnownNotNull, ptr_SDBRequestReadResponse()) SDBRequestReadResponse(std::move(aOther));
    mType = TSDBRequestReadResponse;
}

MOZ_IMPLICIT SDBRequestResponse::SDBRequestResponse(const SDBRequestWriteResponse& aOther)
{
    new (mozilla::KnownNotNull, ptr_SDBRequestWriteResponse()) SDBRequestWriteResponse(aOther);
    mType = TSDBRequestWriteResponse;
}

MOZ_IMPLICIT SDBRequestResponse::SDBRequestResponse(SDBRequestWriteResponse&& aOther)
{
    new (mozilla::KnownNotNull, ptr_SDBRequestWriteResponse()) SDBRequestWriteResponse(std::move(aOther));
    mType = TSDBRequestWriteResponse;
}

MOZ_IMPLICIT SDBRequestResponse::SDBRequestResponse(const SDBRequestCloseResponse& aOther)
{
    new (mozilla::KnownNotNull, ptr_SDBRequestCloseResponse()) SDBRequestCloseResponse(aOther);
    mType = TSDBRequestCloseResponse;
}

MOZ_IMPLICIT SDBRequestResponse::SDBRequestResponse(SDBRequestCloseResponse&& aOther)
{
    new (mozilla::KnownNotNull, ptr_SDBRequestCloseResponse()) SDBRequestCloseResponse(std::move(aOther));
    mType = TSDBRequestCloseResponse;
}

MOZ_IMPLICIT SDBRequestResponse::SDBRequestResponse(const SDBRequestResponse& aOther)
{
    (aOther).AssertSanity();
    switch ((aOther).type()) {
    case Tnsresult:
        {
            new (mozilla::KnownNotNull, ptr_nsresult()) nsresult((aOther).get_nsresult());
            break;
        }
    case TSDBRequestOpenResponse:
        {
            new (mozilla::KnownNotNull, ptr_SDBRequestOpenResponse()) SDBRequestOpenResponse((aOther).get_SDBRequestOpenResponse());
            break;
        }
    case TSDBRequestSeekResponse:
        {
            new (mozilla::KnownNotNull, ptr_SDBRequestSeekResponse()) SDBRequestSeekResponse((aOther).get_SDBRequestSeekResponse());
            break;
        }
    case TSDBRequestReadResponse:
        {
            new (mozilla::KnownNotNull, ptr_SDBRequestReadResponse()) SDBRequestReadResponse((aOther).get_SDBRequestReadResponse());
            break;
        }
    case TSDBRequestWriteResponse:
        {
            new (mozilla::KnownNotNull, ptr_SDBRequestWriteResponse()) SDBRequestWriteResponse((aOther).get_SDBRequestWriteResponse());
            break;
        }
    case TSDBRequestCloseResponse:
        {
            new (mozilla::KnownNotNull, ptr_SDBRequestCloseResponse()) SDBRequestCloseResponse((aOther).get_SDBRequestCloseResponse());
            break;
        }
    case T__None:
        {
            break;
        }
    default:
        {
            mozilla::ipc::LogicError("unreached");
            return;
        }
    }
    mType = (aOther).type();
}

MOZ_IMPLICIT SDBRequestResponse::SDBRequestResponse(SDBRequestResponse&& aOther)
{
    (aOther).AssertSanity();
    Type t = (aOther).type();
    switch (t) {
    case Tnsresult:
        {
            new (mozilla::KnownNotNull, ptr_nsresult()) nsresult(std::move((aOther).get_nsresult()));
            (aOther).MaybeDestroy();
            break;
        }
    case TSDBRequestOpenResponse:
        {
            new (mozilla::KnownNotNull, ptr_SDBRequestOpenResponse()) SDBRequestOpenResponse(std::move((aOther).get_SDBRequestOpenResponse()));
            (aOther).MaybeDestroy();
            break;
        }
    case TSDBRequestSeekResponse:
        {
            new (mozilla::KnownNotNull, ptr_SDBRequestSeekResponse()) SDBRequestSeekResponse(std::move((aOther).get_SDBRequestSeekResponse()));
            (aOther).MaybeDestroy();
            break;
        }
    case TSDBRequestReadResponse:
        {
            new (mozilla::KnownNotNull, ptr_SDBRequestReadResponse()) SDBRequestReadResponse(std::move((aOther).get_SDBRequestReadResponse()));
            (aOther).MaybeDestroy();
            break;
        }
    case TSDBRequestWriteResponse:
        {
            new (mozilla::KnownNotNull, ptr_SDBRequestWriteResponse()) SDBRequestWriteResponse(std::move((aOther).get_SDBRequestWriteResponse()));
            (aOther).MaybeDestroy();
            break;
        }
    case TSDBRequestCloseResponse:
        {
            new (mozilla::KnownNotNull, ptr_SDBRequestCloseResponse()) SDBRequestCloseResponse(std::move((aOther).get_SDBRequestCloseResponse()));
            (aOther).MaybeDestroy();
            break;
        }
    case T__None:
        {
            break;
        }
    default:
        {
            mozilla::ipc::LogicError("unreached");
            return;
        }
    }
    (aOther).mType = T__None;
    mType = t;
}

SDBRequestResponse::~SDBRequestResponse()
{
    MaybeDestroy();
}

auto SDBRequestResponse::operator=(const nsresult& aRhs) -> SDBRequestResponse&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_nsresult()) nsresult(aRhs);
    mType = Tnsresult;
    return (*(this));
}

auto SDBRequestResponse::operator=(nsresult&& aRhs) -> SDBRequestResponse&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_nsresult()) nsresult(std::move(aRhs));
    mType = Tnsresult;
    return (*(this));
}

auto SDBRequestResponse::operator=(const SDBRequestOpenResponse& aRhs) -> SDBRequestResponse&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_SDBRequestOpenResponse()) SDBRequestOpenResponse(aRhs);
    mType = TSDBRequestOpenResponse;
    return (*(this));
}

auto SDBRequestResponse::operator=(SDBRequestOpenResponse&& aRhs) -> SDBRequestResponse&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_SDBRequestOpenResponse()) SDBRequestOpenResponse(std::move(aRhs));
    mType = TSDBRequestOpenResponse;
    return (*(this));
}

auto SDBRequestResponse::operator=(const SDBRequestSeekResponse& aRhs) -> SDBRequestResponse&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_SDBRequestSeekResponse()) SDBRequestSeekResponse(aRhs);
    mType = TSDBRequestSeekResponse;
    return (*(this));
}

auto SDBRequestResponse::operator=(SDBRequestSeekResponse&& aRhs) -> SDBRequestResponse&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_SDBRequestSeekResponse()) SDBRequestSeekResponse(std::move(aRhs));
    mType = TSDBRequestSeekResponse;
    return (*(this));
}

auto SDBRequestResponse::operator=(const SDBRequestReadResponse& aRhs) -> SDBRequestResponse&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_SDBRequestReadResponse()) SDBRequestReadResponse(aRhs);
    mType = TSDBRequestReadResponse;
    return (*(this));
}

auto SDBRequestResponse::operator=(SDBRequestReadResponse&& aRhs) -> SDBRequestResponse&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_SDBRequestReadResponse()) SDBRequestReadResponse(std::move(aRhs));
    mType = TSDBRequestReadResponse;
    return (*(this));
}

auto SDBRequestResponse::operator=(const SDBRequestWriteResponse& aRhs) -> SDBRequestResponse&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_SDBRequestWriteResponse()) SDBRequestWriteResponse(aRhs);
    mType = TSDBRequestWriteResponse;
    return (*(this));
}

auto SDBRequestResponse::operator=(SDBRequestWriteResponse&& aRhs) -> SDBRequestResponse&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_SDBRequestWriteResponse()) SDBRequestWriteResponse(std::move(aRhs));
    mType = TSDBRequestWriteResponse;
    return (*(this));
}

auto SDBRequestResponse::operator=(const SDBRequestCloseResponse& aRhs) -> SDBRequestResponse&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_SDBRequestCloseResponse()) SDBRequestCloseResponse(aRhs);
    mType = TSDBRequestCloseResponse;
    return (*(this));
}

auto SDBRequestResponse::operator=(SDBRequestCloseResponse&& aRhs) -> SDBRequestResponse&
{
    MaybeDestroy();
    new (mozilla::KnownNotNull, ptr_SDBRequestCloseResponse()) SDBRequestCloseResponse(std::move(aRhs));
    mType = TSDBRequestCloseResponse;
    return (*(this));
}

auto SDBRequestResponse::operator=(const SDBRequestResponse& aRhs) -> SDBRequestResponse&
{
    (aRhs).AssertSanity();
    Type t = (aRhs).type();
    switch (t) {
    case Tnsresult:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_nsresult()) nsresult((aRhs).get_nsresult());
            break;
        }
    case TSDBRequestOpenResponse:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_SDBRequestOpenResponse()) SDBRequestOpenResponse((aRhs).get_SDBRequestOpenResponse());
            break;
        }
    case TSDBRequestSeekResponse:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_SDBRequestSeekResponse()) SDBRequestSeekResponse((aRhs).get_SDBRequestSeekResponse());
            break;
        }
    case TSDBRequestReadResponse:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_SDBRequestReadResponse()) SDBRequestReadResponse((aRhs).get_SDBRequestReadResponse());
            break;
        }
    case TSDBRequestWriteResponse:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_SDBRequestWriteResponse()) SDBRequestWriteResponse((aRhs).get_SDBRequestWriteResponse());
            break;
        }
    case TSDBRequestCloseResponse:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_SDBRequestCloseResponse()) SDBRequestCloseResponse((aRhs).get_SDBRequestCloseResponse());
            break;
        }
    case T__None:
        {
            MaybeDestroy();
            break;
        }
    default:
        {
            mozilla::ipc::LogicError("unreached");
            break;
        }
    }
    mType = t;
    return (*(this));
}

auto SDBRequestResponse::operator=(SDBRequestResponse&& aRhs) -> SDBRequestResponse&
{
    (aRhs).AssertSanity();
    Type t = (aRhs).type();
    switch (t) {
    case Tnsresult:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_nsresult()) nsresult(std::move((aRhs).get_nsresult()));
            (aRhs).MaybeDestroy();
            break;
        }
    case TSDBRequestOpenResponse:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_SDBRequestOpenResponse()) SDBRequestOpenResponse(std::move((aRhs).get_SDBRequestOpenResponse()));
            (aRhs).MaybeDestroy();
            break;
        }
    case TSDBRequestSeekResponse:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_SDBRequestSeekResponse()) SDBRequestSeekResponse(std::move((aRhs).get_SDBRequestSeekResponse()));
            (aRhs).MaybeDestroy();
            break;
        }
    case TSDBRequestReadResponse:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_SDBRequestReadResponse()) SDBRequestReadResponse(std::move((aRhs).get_SDBRequestReadResponse()));
            (aRhs).MaybeDestroy();
            break;
        }
    case TSDBRequestWriteResponse:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_SDBRequestWriteResponse()) SDBRequestWriteResponse(std::move((aRhs).get_SDBRequestWriteResponse()));
            (aRhs).MaybeDestroy();
            break;
        }
    case TSDBRequestCloseResponse:
        {
            MaybeDestroy();
            new (mozilla::KnownNotNull, ptr_SDBRequestCloseResponse()) SDBRequestCloseResponse(std::move((aRhs).get_SDBRequestCloseResponse()));
            (aRhs).MaybeDestroy();
            break;
        }
    case T__None:
        {
            MaybeDestroy();
            break;
        }
    default:
        {
            mozilla::ipc::LogicError("unreached");
            break;
        }
    }
    (aRhs).mType = T__None;
    mType = t;
    return (*(this));
}

} // namespace dom
} // namespace mozilla

namespace IPC {
auto ParamTraits<::mozilla::dom::SDBRequestResponse>::Write(
        IPC::MessageWriter* aWriter,
        const paramType& aVar) -> void
{
    typedef ::mozilla::dom::SDBRequestResponse union__;
    int type = (aVar).type();
    IPC::WriteParam(aWriter, type);
    // Sentinel = 'SDBRequestResponse'
    (aWriter)->WriteSentinel(1065879314);

    switch (type) {
    case union__::Tnsresult:
        {
            IPC::WriteParam(aWriter, (aVar).get_nsresult());
            // Sentinel = 'Tnsresult'
            (aWriter)->WriteSentinel(313394133);
            return;
        }
    case union__::TSDBRequestOpenResponse:
        {
            IPC::WriteParam(aWriter, (aVar).get_SDBRequestOpenResponse());
            // Sentinel = 'TSDBRequestOpenResponse'
            (aWriter)->WriteSentinel(1718946040);
            return;
        }
    case union__::TSDBRequestSeekResponse:
        {
            IPC::WriteParam(aWriter, (aVar).get_SDBRequestSeekResponse());
            // Sentinel = 'TSDBRequestSeekResponse'
            (aWriter)->WriteSentinel(1712392430);
            return;
        }
    case union__::TSDBRequestReadResponse:
        {
            IPC::WriteParam(aWriter, (aVar).get_SDBRequestReadResponse());
            // Sentinel = 'TSDBRequestReadResponse'
            (aWriter)->WriteSentinel(1704855778);
            return;
        }
    case union__::TSDBRequestWriteResponse:
        {
            IPC::WriteParam(aWriter, (aVar).get_SDBRequestWriteResponse());
            // Sentinel = 'TSDBRequestWriteResponse'
            (aWriter)->WriteSentinel(1888684401);
            return;
        }
    case union__::TSDBRequestCloseResponse:
        {
            IPC::WriteParam(aWriter, (aVar).get_SDBRequestCloseResponse());
            // Sentinel = 'TSDBRequestCloseResponse'
            (aWriter)->WriteSentinel(1870596444);
            return;
        }
    default:
        {
            aWriter->FatalError("unknown variant of union SDBRequestResponse");
            return;
        }
    }
}

auto ParamTraits<::mozilla::dom::SDBRequestResponse>::Read(IPC::MessageReader* aReader) -> IPC::ReadResult<paramType>
{
    typedef ::mozilla::dom::SDBRequestResponse union__;
    auto maybe__type = IPC::ReadParam<int>(aReader);
    if (!maybe__type) {
        aReader->FatalError("Error deserializing type of union SDBRequestResponse");
        return {};

    }
    auto& type = *maybe__type;
    // Sentinel = 'SDBRequestResponse'
    if ((!((aReader)->ReadSentinel(1065879314)))) {
        mozilla::ipc::SentinelReadError("Error deserializing type of union SDBRequestResponse");
        return {};
    }

    switch (type) {
    case union__::Tnsresult:
        {
            auto maybe__tmp = IPC::ReadParam<::nsresult>(aReader);
            if (!maybe__tmp) {
                aReader->FatalError("Error deserializing variant Tnsresult of union SDBRequestResponse");
                return {};

            }
            auto& tmp = *maybe__tmp;
            // Sentinel = 'Tnsresult'
            if ((!((aReader)->ReadSentinel(313394133)))) {
                mozilla::ipc::SentinelReadError("Error deserializing variant Tnsresult of union SDBRequestResponse");
                return {};
            }
            return std::move(tmp);
        }
    case union__::TSDBRequestOpenResponse:
        {
            auto maybe__tmp = IPC::ReadParam<::mozilla::dom::SDBRequestOpenResponse>(aReader);
            if (!maybe__tmp) {
                aReader->FatalError("Error deserializing variant TSDBRequestOpenResponse of union SDBRequestResponse");
                return {};

            }
            auto& tmp = *maybe__tmp;
            // Sentinel = 'TSDBRequestOpenResponse'
            if ((!((aReader)->ReadSentinel(1718946040)))) {
                mozilla::ipc::SentinelReadError("Error deserializing variant TSDBRequestOpenResponse of union SDBRequestResponse");
                return {};
            }
            return std::move(tmp);
        }
    case union__::TSDBRequestSeekResponse:
        {
            auto maybe__tmp = IPC::ReadParam<::mozilla::dom::SDBRequestSeekResponse>(aReader);
            if (!maybe__tmp) {
                aReader->FatalError("Error deserializing variant TSDBRequestSeekResponse of union SDBRequestResponse");
                return {};

            }
            auto& tmp = *maybe__tmp;
            // Sentinel = 'TSDBRequestSeekResponse'
            if ((!((aReader)->ReadSentinel(1712392430)))) {
                mozilla::ipc::SentinelReadError("Error deserializing variant TSDBRequestSeekResponse of union SDBRequestResponse");
                return {};
            }
            return std::move(tmp);
        }
    case union__::TSDBRequestReadResponse:
        {
            auto maybe__tmp = IPC::ReadParam<::mozilla::dom::SDBRequestReadResponse>(aReader);
            if (!maybe__tmp) {
                aReader->FatalError("Error deserializing variant TSDBRequestReadResponse of union SDBRequestResponse");
                return {};

            }
            auto& tmp = *maybe__tmp;
            // Sentinel = 'TSDBRequestReadResponse'
            if ((!((aReader)->ReadSentinel(1704855778)))) {
                mozilla::ipc::SentinelReadError("Error deserializing variant TSDBRequestReadResponse of union SDBRequestResponse");
                return {};
            }
            return std::move(tmp);
        }
    case union__::TSDBRequestWriteResponse:
        {
            auto maybe__tmp = IPC::ReadParam<::mozilla::dom::SDBRequestWriteResponse>(aReader);
            if (!maybe__tmp) {
                aReader->FatalError("Error deserializing variant TSDBRequestWriteResponse of union SDBRequestResponse");
                return {};

            }
            auto& tmp = *maybe__tmp;
            // Sentinel = 'TSDBRequestWriteResponse'
            if ((!((aReader)->ReadSentinel(1888684401)))) {
                mozilla::ipc::SentinelReadError("Error deserializing variant TSDBRequestWriteResponse of union SDBRequestResponse");
                return {};
            }
            return std::move(tmp);
        }
    case union__::TSDBRequestCloseResponse:
        {
            auto maybe__tmp = IPC::ReadParam<::mozilla::dom::SDBRequestCloseResponse>(aReader);
            if (!maybe__tmp) {
                aReader->FatalError("Error deserializing variant TSDBRequestCloseResponse of union SDBRequestResponse");
                return {};

            }
            auto& tmp = *maybe__tmp;
            // Sentinel = 'TSDBRequestCloseResponse'
            if ((!((aReader)->ReadSentinel(1870596444)))) {
                mozilla::ipc::SentinelReadError("Error deserializing variant TSDBRequestCloseResponse of union SDBRequestResponse");
                return {};
            }
            return std::move(tmp);
        }
    default:
        {
            aReader->FatalError("unknown variant of union SDBRequestResponse");
            return {};
        }
    }
}

} // namespace IPC
