GlassGem is a Swift package that implements the Consistent Overhead Byte Stuffing (COBS) algorithm for encoding arbitrary data with single byte packet delimiters.
It consists of an extension on
Data with exactly two methods:
let someData = ... let cobsEncodedData = someData.encodedUsingCOBS() // Do something with cobsEncodedData, e.g. sending across a communications link
let someCOBSEncodeData = ... // e.g. from a communications link let someData = someData.decodedFromCOBS() // Use someData like normal
The package includes a suite of unit tests.
To use the
GlassGem library in a SwiftPM project,
add the following line to the dependencies in your
.package(url: "https://github.com/armadsen/GlassGem", from: "1.0.0"),
"GlassGem" as a dependency for your executable target:
.target(name: "<target>", dependencies: [ .product(name: "GlassGem", package: "GlassGem"), ]),
import GlassGem to your source code.
GlassGem is already completely usable for the most common scenarios. However, there are a few things I'd like to implement in the future. Pull requests for these are completely welcome. Please include tests for anything you add.
- Support for using GlassGem from Objective-C
- Support for arbitrary delimiter bytes, not just 0x00
- Performance improvements (while still emphasizing readability)