Skip to content

couchdeveloper/messagepack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 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/tris-foundation/messagepack.git", majorVersion: 0)

Memo

public enum MessagePack {
    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)

    public struct Extended {
        public let type: Int8
        public let data: [UInt8]
        public init(type: Int8, data: [UInt8]) {
            self.type = type
            self.data = data
        }
    }
}

Usage

You can find this code and more in examples.

Convenience API

let hey = MessagePack("hey there!")
let bytes = MessagePack.encode(hey)
let original = String(try MessagePack.decode(bytes: bytes))

Performance optimized

var encoder = Encoder()
encoder.encode(.string("one"))
encoder.encode(.int(2))
encoder.encode(.double(3.0))
let encoded = encoder.bytes
// be careful, we use raw pointer here
var decoder = Decoder(bytes: encoded, count: encoded.count)
// throws on invalid data
let value = try decoder.decode()
// reuse decoder
decoder.rewind()
// you can avoid extra MessagePack object 
// if you sure about the structure
// throws on wrong type
let string = try decoder.decode(String.self)
let int = try decoder.decode(UInt8.self)
let double = try decoder.decode(Double.self)
print("decoded manually: \(string), \(int), \(double)")

About

MessagePack serializer - msgpack.org[Swift]

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages