42 lines
912 B
Markdown
42 lines
912 B
Markdown
|
# Protocol
|
||
|
|
||
|
ProtoDef defines a protocol json format. It organizes types in namespaces.
|
||
|
|
||
|
Example:
|
||
|
```json
|
||
|
{
|
||
|
"types": {
|
||
|
"pstring": "native",
|
||
|
"varint": "native"
|
||
|
},
|
||
|
"namespace1": {
|
||
|
"types": {
|
||
|
"mytype": [
|
||
|
"pstring",
|
||
|
"varint"
|
||
|
]
|
||
|
},
|
||
|
"namespace2": {
|
||
|
"packet": "mytype"
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
```
|
||
|
|
||
|
> Don't define types with same name (or override types in child namespaces) because this will lead to implementation-defined behavior.
|
||
|
> Same with override of built-in types such as `u8`.
|
||
|
|
||
|
## **types** : { [String]: Type | "native", ... }
|
||
|
Arguments:
|
||
|
* [object] : a type definition
|
||
|
* * [key] : the name
|
||
|
* * [value] : the type (or `"native"` if implemented)
|
||
|
* * * 0 : name of used type
|
||
|
* * * 1 : options of used type
|
||
|
|
||
|
## **[String]** : { [namespace], ... }
|
||
|
Arguments:
|
||
|
* [object] : A namespace object
|
||
|
* * [key] : type name
|
||
|
* * [value] : namespace or type (see above) definition
|