2775 |
2775 |
2776 It is possible to emit a *Unified Frame-Based Protocol* by using special |
2776 It is possible to emit a *Unified Frame-Based Protocol* by using special |
2777 syntax. |
2777 syntax. |
2778 |
2778 |
2779 A frame is composed as a type, flags, and payload. These can be parsed |
2779 A frame is composed as a type, flags, and payload. These can be parsed |
2780 from a string of the form ``<requestid> <type> <flags> <payload>``. That is, |
2780 from a string of the form: |
2781 4 space-delimited strings. |
2781 |
2782 |
2782 <request-id> <stream-id> <stream-flags> <type> <flags> <payload> |
2783 ``payload`` is the simplest: it is evaluated as a Python byte string |
2783 |
2784 literal. |
2784 ``request-id`` and ``stream-id`` are integers defining the request and |
2785 |
2785 stream identifiers. |
2786 ``requestid`` is an integer defining the request identifier. |
|
2787 |
2786 |
2788 ``type`` can be an integer value for the frame type or the string name |
2787 ``type`` can be an integer value for the frame type or the string name |
2789 of the type. The strings are defined in ``wireprotoframing.py``. e.g. |
2788 of the type. The strings are defined in ``wireprotoframing.py``. e.g. |
2790 ``command-name``. |
2789 ``command-name``. |
2791 |
2790 |
2792 ``flags`` is a ``|`` delimited list of flag components. Each component |
2791 ``stream-flags`` and ``flags`` are a ``|`` delimited list of flag |
2793 (and there can be just one) can be an integer or a flag name for the |
2792 components. Each component (and there can be just one) can be an integer |
2794 specified frame type. Values are resolved to integers and then bitwise |
2793 or a flag name for stream flags or frame flags, respectively. Values are |
2795 OR'd together. |
2794 resolved to integers and then bitwise OR'd together. |
|
2795 |
|
2796 ``payload`` is is evaluated as a Python byte string literal. |
2796 """ |
2797 """ |
2797 opts = pycompat.byteskwargs(opts) |
2798 opts = pycompat.byteskwargs(opts) |
2798 |
2799 |
2799 if opts['localssh'] and not repo: |
2800 if opts['localssh'] and not repo: |
2800 raise error.Abort(_('--localssh requires a repository')) |
2801 raise error.Abort(_('--localssh requires a repository')) |