Example #1
0
 def _netref_factory(self, oid, clsname, modname):
     typeinfo = (clsname, modname)
     if typeinfo in self._netref_classes_cache:
         cls = self._netref_classes_cache[typeinfo]
     elif typeinfo in netref.builtin_classes_cache:
         cls = netref.builtin_classes_cache[typeinfo]
     else:
         info = self.sync_request(consts.HANDLE_INSPECT, oid)
         cls = netref.class_factory(clsname, modname, info)
         self._netref_classes_cache[typeinfo] = cls
     return cls(weakref.ref(self), oid)
Example #2
0
 def _netref_factory(self, oid, clsname, modname):
     typeinfo = (clsname, modname)
     if typeinfo in self._netref_classes_cache:
         cls = self._netref_classes_cache[typeinfo]
     elif typeinfo in netref.builtin_classes_cache:
         cls = netref.builtin_classes_cache[typeinfo]
     else:
         info = self.sync_request(consts.HANDLE_INSPECT, oid)
         cls = netref.class_factory(clsname, modname, info)
         self._netref_classes_cache[typeinfo] = cls
     return cls(weakref.ref(self), oid)
Example #3
0
 def _netref_factory(self, id_pack):  # boxing
     """id_pack is for remote, so when class id fails to directly match """
     if id_pack[0] in netref.builtin_classes_cache:
         cls = netref.builtin_classes_cache[id_pack[0]]
     elif id_pack[1] in self._netref_classes_cache:
         cls = self._netref_classes_cache[id_pack[1]]
     else:
         # in the future, it could see if a sys.module cache/lookup hits first
         cls_methods = self.sync_request(consts.HANDLE_INSPECT, id_pack)
         cls = netref.class_factory(id_pack, cls_methods)
         self._netref_classes_cache[id_pack[1]] = cls
     return cls(self, id_pack)
Example #4
0
 def _netref_factory(self, id_pack):  # boxing
     """id_pack is for remote, so when class id fails to directly match """
     cls = None
     if id_pack[2] == 0 and id_pack in self._netref_classes_cache:
         cls = self._netref_classes_cache[id_pack]
     elif id_pack[0] in netref.builtin_classes_cache:
         cls = netref.builtin_classes_cache[id_pack[0]]
     if cls is None:
         # in the future, it could see if a sys.module cache/lookup hits first
         cls_methods = self.sync_request(consts.HANDLE_INSPECT, id_pack)
         cls = netref.class_factory(id_pack, cls_methods)
         if id_pack[2] == 0:
             # only use cached netrefs for classes
             # ... instance caching after gc of a proxy will take some mental gymnastics
             self._netref_classes_cache[id_pack] = cls
     return cls(self, id_pack)