Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

94 Commits

Repository files navigation

MessagePack

MessagePack is an efficient binary serialization format. It lets you exchange data among multiple languages like JSON. But it's faster and smaller. Small integers are encoded into a single byte, and typical short strings require only one extra byte in addition to the strings themselves.

Package.swift

.package(url:"https://github.com/swiftstack/messagepack.git",.branch("dev"))

Memo

publicenumMessagePack{case `nil`
case int(Int)case uint(UInt)case bool(Bool)case float(Float)case double(Double)case string(String)case binary([UInt8])case array([MessagePack])case map([MessagePack:MessagePack])case extended(Extended)publicstructExtended{publiclettype:Int8publicletdata:[UInt8]publicinit(type:Int8, data:[UInt8]){self.type = type
self.data = data
}}}

Usage

You can find this code and more in examples.

Basic API

lethey=MessagePack("hey there!")letbytes=tryMessagePack.encode(hey)letoriginal=String(tryMessagePack.decode(bytes: bytes))

Stream API

lethey=MessagePack("hey there!")letstream=BufferedStream(stream:NetworkStream(socket: client))tryMessagePack.encode(hey, to: stream)try stream.flush()letoriginal=String(tryMessagePack.decode(from: stream))

Performance optimized

letoutput=OutputByteStream()varencoder=MessagePackWriter(output)try encoder.encode("one")try encoder.encode(2)try encoder.encode(3.0)letencoded= output.bytes
vardecoder=MessagePackReader(InputByteStream(encoded))letstring=try decoder.decode(String.self)letint=try decoder.decode(UInt8.self)letdouble=try decoder.decode(Double.self)print("decoded manually: \(string), \(int), \(double)")

About

MessagePack serializer - msgpack.org[Swift]

Topics

Resources

Stars

18 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages