mercurial/wireproto.py
changeset 29733 bb04f96df51c
parent 29706 7f6130c7ffe1
child 29734 62e2e048d068
equal deleted inserted replaced
29732:0806fa2a39d8 29733:bb04f96df51c
   185             .replace(':e', '=')
   185             .replace(':e', '=')
   186             .replace(':s', ';')
   186             .replace(':s', ';')
   187             .replace(':o', ',')
   187             .replace(':o', ',')
   188             .replace(':c', ':'))
   188             .replace(':c', ':'))
   189 
   189 
       
   190 def encodebatchcmds(req):
       
   191     """Return a ``cmds`` argument value for the ``batch`` command."""
       
   192     cmds = []
       
   193     for op, argsdict in req:
       
   194         args = ','.join('%s=%s' % (escapearg(k), escapearg(v))
       
   195                         for k, v in argsdict.iteritems())
       
   196         cmds.append('%s %s' % (op, args))
       
   197 
       
   198     return ';'.join(cmds)
       
   199 
   190 # mapping of options accepted by getbundle and their types
   200 # mapping of options accepted by getbundle and their types
   191 #
   201 #
   192 # Meant to be extended by extensions. It is extensions responsibility to ensure
   202 # Meant to be extended by extensions. It is extensions responsibility to ensure
   193 # such options are properly processed in exchange.getbundle.
   203 # such options are properly processed in exchange.getbundle.
   194 #
   204 #
   224     def _submitbatch(self, req):
   234     def _submitbatch(self, req):
   225         """run batch request <req> on the server
   235         """run batch request <req> on the server
   226 
   236 
   227         Returns an iterator of the raw responses from the server.
   237         Returns an iterator of the raw responses from the server.
   228         """
   238         """
   229         cmds = []
   239         rsp = self._callstream("batch", cmds=encodebatchcmds(req))
   230         for op, argsdict in req:
       
   231             args = ','.join('%s=%s' % (escapearg(k), escapearg(v))
       
   232                             for k, v in argsdict.iteritems())
       
   233             cmds.append('%s %s' % (op, args))
       
   234         rsp = self._callstream("batch", cmds=';'.join(cmds))
       
   235         chunk = rsp.read(1024)
   240         chunk = rsp.read(1024)
   236         work = [chunk]
   241         work = [chunk]
   237         while chunk:
   242         while chunk:
   238             while ';' not in chunk and chunk:
   243             while ';' not in chunk and chunk:
   239                 chunk = rsp.read(1024)
   244                 chunk = rsp.read(1024)