equal
deleted
inserted
replaced
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) |