mercurial/wireprotoframing.py
changeset 43117 8ff1ecfadcd1
parent 43106 d783f945a701
child 43506 9f70512ae2cf
equal deleted inserted replaced
43116:defabf63e969 43117:8ff1ecfadcd1
   709     """Decoder for the "identity" stream encoding profile."""
   709     """Decoder for the "identity" stream encoding profile."""
   710 
   710 
   711     def __init__(self, ui, extraobjs):
   711     def __init__(self, ui, extraobjs):
   712         if extraobjs:
   712         if extraobjs:
   713             raise error.Abort(
   713             raise error.Abort(
   714                 _(b'identity decoder received unexpected ' b'additional values')
   714                 _(b'identity decoder received unexpected additional values')
   715             )
   715             )
   716 
   716 
   717     def decode(self, data):
   717     def decode(self, data):
   718         return data
   718         return data
   719 
   719 
   743     def __init__(self, ui, extraobjs):
   743     def __init__(self, ui, extraobjs):
   744         import zlib
   744         import zlib
   745 
   745 
   746         if extraobjs:
   746         if extraobjs:
   747             raise error.Abort(
   747             raise error.Abort(
   748                 _(b'zlib decoder received unexpected ' b'additional values')
   748                 _(b'zlib decoder received unexpected additional values')
   749             )
   749             )
   750 
   750 
   751         self._decompressor = zlib.decompressobj()
   751         self._decompressor = zlib.decompressobj()
   752 
   752 
   753     def decode(self, data):
   753     def decode(self, data):
   800 
   800 
   801 class zstd8mbdecoder(zstdbasedecoder):
   801 class zstd8mbdecoder(zstdbasedecoder):
   802     def __init__(self, ui, extraobjs):
   802     def __init__(self, ui, extraobjs):
   803         if extraobjs:
   803         if extraobjs:
   804             raise error.Abort(
   804             raise error.Abort(
   805                 _(b'zstd8mb decoder received unexpected ' b'additional values')
   805                 _(b'zstd8mb decoder received unexpected additional values')
   806             )
   806             )
   807 
   807 
   808         super(zstd8mbdecoder, self).__init__(maxwindowsize=8 * 1048576)
   808         super(zstd8mbdecoder, self).__init__(maxwindowsize=8 * 1048576)
   809 
   809 
   810 
   810 
  1114 
  1114 
  1115         if frame.streamflags & STREAM_FLAG_ENCODING_APPLIED:
  1115         if frame.streamflags & STREAM_FLAG_ENCODING_APPLIED:
  1116             # TODO handle decoding frames
  1116             # TODO handle decoding frames
  1117             self._state = b'errored'
  1117             self._state = b'errored'
  1118             raise error.ProgrammingError(
  1118             raise error.ProgrammingError(
  1119                 b'support for decoding stream payloads ' b'not yet implemented'
  1119                 b'support for decoding stream payloads not yet implemented'
  1120             )
  1120             )
  1121 
  1121 
  1122         if frame.streamflags & STREAM_FLAG_END_STREAM:
  1122         if frame.streamflags & STREAM_FLAG_END_STREAM:
  1123             del self._incomingstreams[frame.streamid]
  1123             del self._incomingstreams[frame.streamid]
  1124 
  1124 
  1359         entry = self._receivingcommands[requestid]
  1359         entry = self._receivingcommands[requestid]
  1360 
  1360 
  1361         if not entry[b'requestdone']:
  1361         if not entry[b'requestdone']:
  1362             self._state = b'errored'
  1362             self._state = b'errored'
  1363             raise error.ProgrammingError(
  1363             raise error.ProgrammingError(
  1364                 b'should not be called without ' b'requestdone set'
  1364                 b'should not be called without requestdone set'
  1365             )
  1365             )
  1366 
  1366 
  1367         del self._receivingcommands[requestid]
  1367         del self._receivingcommands[requestid]
  1368 
  1368 
  1369         if self._receivingcommands:
  1369         if self._receivingcommands:
  1662         elif frame.flags & FLAG_COMMAND_DATA_EOS:
  1662         elif frame.flags & FLAG_COMMAND_DATA_EOS:
  1663             entry[b'data'].seek(0)
  1663             entry[b'data'].seek(0)
  1664             return self._makeruncommandresult(frame.requestid)
  1664             return self._makeruncommandresult(frame.requestid)
  1665         else:
  1665         else:
  1666             self._state = b'errored'
  1666             self._state = b'errored'
  1667             return self._makeerrorresult(
  1667             return self._makeerrorresult(_(b'command data frame without flags'))
  1668                 _(b'command data frame without ' b'flags')
       
  1669             )
       
  1670 
  1668 
  1671     def _onframeerrored(self, frame):
  1669     def _onframeerrored(self, frame):
  1672         return self._makeerrorresult(_(b'server already errored'))
  1670         return self._makeerrorresult(_(b'server already errored'))
  1673 
  1671 
  1674 
  1672 
  1794             self._pendingrequests.append(request)
  1792             self._pendingrequests.append(request)
  1795             return request, b'noop', {}
  1793             return request, b'noop', {}
  1796         else:
  1794         else:
  1797             if not self._cansend:
  1795             if not self._cansend:
  1798                 raise error.ProgrammingError(
  1796                 raise error.ProgrammingError(
  1799                     b'sends cannot be performed on ' b'this instance'
  1797                     b'sends cannot be performed on this instance'
  1800                 )
  1798                 )
  1801 
  1799 
  1802             if not self._hasmultiplesend:
  1800             if not self._hasmultiplesend:
  1803                 self._cansend = False
  1801                 self._cansend = False
  1804                 self._canissuecommands = False
  1802                 self._canissuecommands = False
  1822         if not self._pendingrequests:
  1820         if not self._pendingrequests:
  1823             return b'noop', {}
  1821             return b'noop', {}
  1824 
  1822 
  1825         if not self._cansend:
  1823         if not self._cansend:
  1826             raise error.ProgrammingError(
  1824             raise error.ProgrammingError(
  1827                 b'sends cannot be performed on this ' b'instance'
  1825                 b'sends cannot be performed on this instance'
  1828             )
  1826             )
  1829 
  1827 
  1830         # If the instance only allows sending once, mark that we have fired
  1828         # If the instance only allows sending once, mark that we have fired
  1831         # our one shot.
  1829         # our one shot.
  1832         if not self._hasmultiplesend:
  1830         if not self._hasmultiplesend: