/*
 * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
 *
 * Squid software is distributed under GPLv2+ license and includes
 * contributions from numerous individuals and organizations.
 * Please see the COPYING and CONTRIBUTORS files for details.
 */

/* DEBUG: section 16    Cache Manager API */

#include "squid.h"
#include "base/TextException.h"
#include "comm/Connection.h"
#include "ipc/RequestId.h"
#include "mgr/Filler.h"
#include "mgr/Response.h"
#include "Store.h"

CBDATA_NAMESPACED_CLASS_INIT(Mgr, Filler);

Mgr::Filler::Filler(const Action::Pointer &anAction, const Comm::ConnectionPointer &conn,
                    const Ipc::RequestId aRequestId):
    StoreToCommWriter(conn, anAction->createStoreEntry()),
    action(anAction),
    requestId(aRequestId)
{
    debugs(16, 5, conn << " action: " << action);
}

void
Mgr::Filler::start()
{
    debugs(16, 5, MYNAME);
    Must(requestId != 0);
    Must(action != nullptr);

    StoreToCommWriter::start();
    action->run(entry, false);
}

void
Mgr::Filler::swanSong()
{
    debugs(16, 5, MYNAME);
    action->sendResponse(requestId);
    StoreToCommWriter::swanSong();
}

