Skip to content

Commit

Permalink
Docs: Better explain how .verify, .encode and .decode are connected
Browse files Browse the repository at this point in the history
  • Loading branch information
dcodeIO committed Mar 5, 2017
1 parent 7502dd2 commit 13e4aa3
Showing 1 changed file with 5 additions and 1 deletion.
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,11 @@ protobuf.load("awesome.proto", function(err, root) {
});
```

**Note** that `Message.encode` does not implicitly verify a message but tries to encode whatever is specified, which might result in a runtime error being thrown somewhere down the road. Instead, there is `Message.verify` to explicitly perform verification priorly where necessary to avoid redundant assertions where messages are already known to be valid. `Message.decode` throws if a buffer is invalid.
**Note:** To avoid redundant assertions where messages are already known to be valid, there is a seperate method for encoding and verification. Hence ...

* `Message.encode` does not implicitly verify a message but tries to encode whatever is specified, possibly resulting in a runtime error being thrown somewhere down the road.
* `Message.verify` can be used to explicitly perform verification prior to encoding where necessary. Instead of throwing, it returns the error message, if any.
* `Message.decode` throws if a buffer is invalid or missing required fields and doesn't require calling `Message.verify` afterwards.

Additionally, promise syntax can be used by omitting the callback, if preferred:

Expand Down

0 comments on commit 13e4aa3

Please sign in to comment.