Commit 89660575 authored by Caitlin Ross's avatar Caitlin Ross
Browse files

allow an inline writer to be created and used without an inline reader

parent d244fdd0
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -41,12 +41,19 @@ InlineWriter::InlineWriter(IO &io, const std::string &name, const Mode mode,
const InlineReader *InlineWriter::GetReader() const
{
    const auto &engine_map = m_IO.GetEngines();
    if (engine_map.size() != 2)
    if (engine_map.size() == 1)
    {
        // it should be fine for a writer to be created and start running,
        // without the reader having been created. This is necessary to run
        // correctly with ParaView Catalyst Live.
        return nullptr;
    }
    else if (engine_map.size() > 2)
    {
        helper::Throw<std::runtime_error>(
            "Engine", "InlineWriter", "GetReader",
            "There must be exactly one reader and one "
            "writer for the inline engine.");
            "There must be only one inline writer and at most "
            "one inline reader.");
    }

    std::shared_ptr<Engine> e = engine_map.begin()->second;
@@ -77,7 +84,7 @@ StepStatus InlineWriter::BeginStep(StepMode mode, const float timeoutSeconds)
    }

    auto reader = GetReader();
    if (reader->IsInsideStep())
    if (reader && reader->IsInsideStep())
    {
        m_InsideStep = false;
        return StepStatus::NotReady;