(self, opcode, *args, **kwargs)
| 686 | return retval |
| 687 | |
| 688 | def request(self, opcode, *args, **kwargs): |
| 689 | free = [] |
| 690 | args = list(args) |
| 691 | args2 = [] |
| 692 | for i, arg in enumerate(args): |
| 693 | if isinstance(arg, str): |
| 694 | arg = arg.encode("utf-8") + b"\0" |
| 695 | if isinstance(arg, bytes) and self.heap: |
| 696 | p = self.heap.malloc(len(arg)) |
| 697 | free.append(p) |
| 698 | self.iface.writemem(p, arg) |
| 699 | if (i < (len(args) - 1)) and args[i + 1] is None: |
| 700 | args[i + 1] = len(arg) |
| 701 | arg = p |
| 702 | if arg < 0: |
| 703 | arg &= (1 << 64) - 1 |
| 704 | args2.append(arg) |
| 705 | try: |
| 706 | return self._request(opcode, *args2, **kwargs) |
| 707 | finally: |
| 708 | for i in free: |
| 709 | self.heap.free(i) |
| 710 | |
| 711 | def nop(self): |
| 712 | self.request(self.P_NOP) |
no test coverage detected