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


#include "mozilla/loader/ScriptCacheActors.h"
#include "mozilla/dom/PContentParent.h"
#include "mozilla/dom/PContentChild.h"
#include "mozilla/loader/PScriptCache.h"
#include "mozilla/loader/PScriptCacheParent.h"
#include "mozilla/loader/PScriptCacheChild.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 loader {
namespace PScriptCache {

nsresult
CreateEndpoints(
        mozilla::ipc::EndpointProcInfo aParentDestInfo,
        mozilla::ipc::EndpointProcInfo aChildDestInfo,
        mozilla::ipc::Endpoint<::mozilla::loader::PScriptCacheParent>* aParent,
        mozilla::ipc::Endpoint<::mozilla::loader::PScriptCacheChild>* 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 PScriptCache
} // namespace loader
} // namespace mozilla

//-----------------------------------------------------------------------------
// Method definitions for the IPDL type |struct ScriptData|
//
namespace mozilla {
namespace loader {
} // namespace loader
} // namespace mozilla

namespace IPC {
auto ParamTraits<::mozilla::loader::ScriptData>::Write(
        IPC::MessageWriter* aWriter,
        const paramType& aVar) -> void
{
    IPC::WriteParam(aWriter, (aVar).url());
    // Sentinel = 'url'
    (aWriter)->WriteSentinel(45220180);
    IPC::WriteParam(aWriter, (aVar).cachePath());
    // Sentinel = 'cachePath'
    (aWriter)->WriteSentinel(291308418);
    IPC::WriteParam(aWriter, (aVar).loadTime());
    // Sentinel = 'loadTime'
    (aWriter)->WriteSentinel(242549552);
    IPC::WriteParam(aWriter, (aVar).xdrData());
    // Sentinel = 'xdrData'
    (aWriter)->WriteSentinel(190644937);
}

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

    }
    auto& _url = *maybe___url;
    // Sentinel = 'url'
    if ((!((aReader)->ReadSentinel(45220180)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'url' (nsCString) member of 'ScriptData'");
        return {};
    }
    auto maybe___cachePath = IPC::ReadParam<::nsCString>(aReader);
    if (!maybe___cachePath) {
        aReader->FatalError("Error deserializing 'cachePath' (nsCString) member of 'ScriptData'");
        return {};

    }
    auto& _cachePath = *maybe___cachePath;
    // Sentinel = 'cachePath'
    if ((!((aReader)->ReadSentinel(291308418)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'cachePath' (nsCString) member of 'ScriptData'");
        return {};
    }
    auto maybe___loadTime = IPC::ReadParam<::mozilla::TimeStamp>(aReader);
    if (!maybe___loadTime) {
        aReader->FatalError("Error deserializing 'loadTime' (TimeStamp) member of 'ScriptData'");
        return {};

    }
    auto& _loadTime = *maybe___loadTime;
    // Sentinel = 'loadTime'
    if ((!((aReader)->ReadSentinel(242549552)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'loadTime' (TimeStamp) member of 'ScriptData'");
        return {};
    }
    auto maybe___xdrData = IPC::ReadParam<nsTArray<::uint8_t>>(aReader);
    if (!maybe___xdrData) {
        aReader->FatalError("Error deserializing 'xdrData' (uint8_t[]) member of 'ScriptData'");
        return {};

    }
    auto& _xdrData = *maybe___xdrData;
    // Sentinel = 'xdrData'
    if ((!((aReader)->ReadSentinel(190644937)))) {
        mozilla::ipc::SentinelReadError("Error deserializing 'xdrData' (uint8_t[]) member of 'ScriptData'");
        return {};
    }
    IPC::ReadResult<paramType> result__{
            std::in_place,
            std::move(_url),
            std::move(_cachePath),
            std::move(_loadTime),
            std::move(_xdrData)};
    return result__;
}

} // namespace IPC
