Program Listing for File trace_fifo_windows.h#

Return to documentation for file (tracefifo\trace_fifo_windows.h)

/********************************************************************************
 * Copyright (c) 2025-2026 ZF Friedrichshafen AG
 *
 * This program and the accompanying materials are made available under the
 * terms of the Apache License Version 2.0 which is available at
 * https://www.apache.org/licenses/LICENSE-2.0
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Contributors:
 *   Erik Verhoeven - initial API and implementation
 ********************************************************************************/

#if !defined TRACE_FIFO_WINDOWS_H && defined _WIN32
#define TRACE_FIFO_WINDOWS_H

// Resolve conflict
#pragma push_macro("interface")
#undef interface

#ifndef NOMINMAX
#define NOMINMAX
#endif
#include <WinSock2.h>
#include <Windows.h>
#include <process.h>

// Resolve conflict
#pragma pop_macro("interface")
#ifdef GetClassInfo
#undef GetClassInfo
#endif

class CTraceFifoWindows : public CTraceFifoBase
{
public:
    CTraceFifoWindows(uint32_t uiInstanceID = 1000u, size_t nSize = 16*1024);

    virtual ~CTraceFifoWindows() override;

    CTraceFifoWindows(const CTraceFifoWindows& rfifo) = delete;

    CTraceFifoWindows(CTraceFifoWindows&& rfifo) noexcept;

    CTraceFifoWindows& operator=(const CTraceFifoWindows& rfifo) = delete;

    CTraceFifoWindows& operator=(CTraceFifoWindows&& rfifo) noexcept;

    virtual bool Open(size_t nTimeout = 1000, uint32_t uiFlags = 0u) override;

    // Ignore cppcheck warning for not using dynamic binding when being called through the destructor.
    // cppcheck-suppress virtualCallInConstructor
    virtual void Close() override;

    virtual bool IsOpened() const override;

private:
    HANDLE      m_hMapFile = INVALID_HANDLE_VALUE;
};

using CTraceFifoImpl = CTraceFifoWindows;

#endif // !defined TRACE_FIFO_WINDOWS_H