PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /proc/self/root/opt/saltstack/salt/extras-3.10/pyroute2/netlink/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : //proc/self/root/opt/saltstack/salt/extras-3.10/pyroute2/netlink/buffer.py |
try: from multiprocessing import shared_memory except ImportError: shared_memory = None class Page: ''' Memory page. ''' def __init__(self, view, offset): self.view = view self.offset = offset self.is_free = True def use(self): self.is_free = False def free(self): self.is_free = True def close(self): self.view.release() class Buffer: ''' Manage the buffer memory to receive raw netlink data. ''' def __init__(self, mode='internal', size=10485760, page_size=32768): self.mode = mode self.size = size self.page_size = page_size if self.mode == 'internal': self.mem = None self.buf = bytearray(self.size) elif self.mode == 'shared': if shared_memory is None: raise ModuleNotFoundError('shared memory buffer not supported') self.mem = shared_memory.SharedMemory(create=True, size=self.size) self.buf = self.mem.buf self.view = memoryview(self.buf) self.directory = {} for index in range(size // page_size): offset = index * page_size self.directory[index] = Page( self.view[offset : offset + self.page_size], offset ) def __enter__(self): return self def __exit__(self, exc_type, exc_value, traceback): self.close() def get_free_page(self): for index, page in self.directory.items(): if page.is_free: page.use() return page raise MemoryError('no free memory pages available') def close(self): for page in self.directory.values(): page.close() self.view.release() if self.mode == 'shared': self.mem.close() self.mem.unlink() def __getitem__(self, key): return self.directory[key]