Categorygithub.com/akitasoftware/objecthash-proto
modulepackage
0.0.0-20211020162104-173a34b1afb0
Repository: https://github.com/akitasoftware/objecthash-proto.git
Documentation: pkg.go.dev

# README

ObjectHash-Proto

Build
Status Go Report
Card GoDoc

The library is an implementation of Ben Laurie's ObjectHash for protocol buffers.

This implementation is still experimental and until it is stable, protobuf messages are not guaranteed to result in the same value.

Usage

Get a new ProtoHasher instance using the NewHasher method, then call HashProto with a protobuf message to get its ObjectHash:

hasher := protohash.NewHasher()
hash, err := hasher.HashProto(message)

Options

In order to simplify compatibility with other ObjectHash applications, this library exposes the following options that control how the hashing is done:

  1. EnumsAsStrings(): Makes enum values get hashed as strings instead of being hashed as their integer values.

  2. FieldNamesAsKeys(): Makes protobuf message fields use their names as keys instead of using the field tag numbers as keys.

  3. MessageIdentifier(i): Instead of hashing protobuf messages as maps, this makes it possible to distinguish them by using i as the type-identifier that gets used in calculating the ObjectHash of a message.

Those options can be specified in any order as arguments to the NewHasher function. Example:

hasher := protohash.NewHasher(EnumsAsStrings(), MessageIdentifier(`m`), FieldNamesAsKeys())

Help and Discussion

# Packages

No description provided by the author
No description provided by the author

# Functions

Assumes the following about a field of the given message.
Sets the hash function that the ProtoHasher will use to hash individual fields.
CheckWellKnownType checks if a value is one of the proto library's well-known types.
EnumsAsStrings returns an Option to specify that enum values should be hashed as strings instead of being hashed as integers.
FieldNamesAsKeys returns an Option to specify that field names should be used as their keys instead of using their tag number.
Ignores fields with the given field name when hashing.
MessageIdentifier returns an Option to specify that proto messages should use the supplied argument as their type identifier.
NewHasher creates a new ProtoHasher with the options specified in the argument.

# Constants

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Interfaces

No description provided by the author
Option modifies how ObjectHashes for protobufs is calculated.
ProtoHasher is an interface for hashers that are capable of returning an ObjectHash for protobufs.

# Type aliases

No description provided by the author