LGProtocol is a standalone distribution of the Looking Glass wire protocol. Its install surface contains portable KVMFR and network transport protocol headers, shared network identity constants, plus reusable network serialization and validation codecs.
Consumers include protocol declarations from the exported include root, for example:
#include <LGProtocol/KVMFR.h>
#include <LGProtocol/NetworkServices.h>CMake packages expose the header-only LGProtocol::LGProtocol interface target.
The target requires C11 or C++11 and adds only the installed include root:
find_package(LGProtocol REQUIRED)
target_link_libraries(my_target PRIVATE LGProtocol::LGProtocol)Consumers that call the network codec functions link the static
LGProtocol::Network target instead. It supplies the stream readers and
writers, packet framing, serialization, parsing, and protocol validation while
also providing the public headers transitively:
find_package(LGProtocol REQUIRED)
target_link_libraries(my_target PRIVATE LGProtocol::Network)Configure and run the native validation suite with:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
ctest --test-dir build --output-on-failureThe common wire format uses default x86-64 Linux/Windows packing, native
little-endian values, 32-bit C enums and int, eight-bit bytes, and 32-bit
IEEE-754 float. Short-enum compilation is incompatible.
KVMFRFrameBuffer requires the four-byte, four-byte-aligned, lock-free
KVMFRFrameBufferWritePointer atomic type.
The umbrella retains source-visible trailing arrays, so C and C++ compilers
must accept the documented zero-length/unsized-array extensions.
Except where otherwise stated, every file in this repository is publicly
licensed under the GNU General Public License, version 2 or (at your option)
any later version (GPL-2.0-or-later). See LICENSE.
Alternative license terms are available only under a separate written agreement with the copyright holder. Such an agreement is independent of, and does not restrict, the rights granted under the public GPL license.