(data, writer)
| 18 | |
| 19 | |
| 20 | def stream(data, writer): |
| 21 | packer = msgpack.Packer(use_bin_type=True) |
| 22 | writer(packer.pack_map_header(len(data))) |
| 23 | for key, val in data.items(): |
| 24 | writer(packer.pack(key)) |
| 25 | if isinstance(val, io.IOBase): # File obj |
| 26 | max_size = os.fstat(val.fileno()).st_size - val.tell() |
| 27 | size = min(max_size, val.read_bytes) |
| 28 | bytes_left = size |
| 29 | writer(msgpackHeader(size)) |
| 30 | buff = 1024 * 64 |
| 31 | while 1: |
| 32 | writer(val.read(min(bytes_left, buff))) |
| 33 | bytes_left = bytes_left - buff |
| 34 | if bytes_left <= 0: |
| 35 | break |
| 36 | else: # Simple |
| 37 | writer(packer.pack(val)) |
| 38 | return size |
| 39 | |
| 40 | |
| 41 | class FilePart(object): |
nothing calls this directly
no test coverage detected