Outils pour utilisateurs

Outils du site


using_perspective_broker

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
using_perspective_broker [2022/11/30 20:52] sergeusing_perspective_broker [2022/12/16 10:42] (Version actuelle) – [Using Perspective Broker] serge
Ligne 1: Ligne 1:
 ======Using Perspective Broker====== ======Using Perspective Broker======
 +{{ :media_01:apkv_20.svg |}}
 +
 +{{ ::labo.svg |}}
 +
 <WRAP center round info centeralign 60%> <WRAP center round info centeralign 60%>
-**Niveau Pro et intergalactique !**+**Niveau Pro et intergalactique !**\\ 
 +Cette API: 
 +  * a entre 15 et 20 ans 
 +  * n'est que vaguement maintenu 
 +  * un exemple au moins ne marche pas 
 +  * le tranfert de datas simples marche 
 +  * le transfert d'objets complexes ne marche pas 
 +  * les exemples ne respectent pas le PEP 8, c'est imbriqué au possible
 </WRAP> </WRAP>
  
 <WRAP center round box 60% > <WRAP center round box 60% >
   * **{{tagpage>perspectivebroker|Toutes les pages Twisted Perspective Broker}}**   * **{{tagpage>perspectivebroker|Toutes les pages Twisted Perspective Broker}}**
-  * **[[perspective_broker|Page précédente]]**+  * **[[perspective_broker|Page précédente]]** Python: Twisted Perspective Broker 
 +  * **[[managing_clients_of_perspectives|Page suivante]]** Managing Clients of Perspectives 
 +  * **[[https://github.com/sergeLabo/PB|Les fichiers sources]]**
 </WRAP> </WRAP>
  
Ligne 429: Ligne 442:
 </file> </file>
  
-=====Page suivante: Twisted Perspective Broker et Kivy===== +=====Transfert d'une image ou d'un json===== 
-  * **[[twisted_perspective_broker_et_kivy|Twisted Perspective Broker et Kivy]]**+On peut transférer n'import quoi mais il faut toujours convertir ses datas en bytes (octets) avant de les envoyer. Et les décoder à la réception. 
 +<file python > 
 +from time import sleep 
 +from threading import Thread 
 + 
 +import numpy as np 
 +import cv2 
 + 
 +from twisted.internet import reactor 
 +from twisted.spread import pb 
 + 
 +class MyImage: 
 +    def __init__(self): 
 +        self.img = cv2.imread('./covers/Fasokan.jpg'
 +        img = cv2.resize(self.img, (512, 512)) 
 +        encode_param=[int(cv2.IMWRITE_JPEG_QUALITY), 90] 
 +        result, imgencode = cv2.imencode('.jpg', img, encode_param) 
 +        data = np.array(imgencode) 
 +        print(data.shape) 
 +        self.stringData = data.tobytes() 
 + 
 + 
 +class ObjetPrincipal(pb.Root): 
 +    def __init__(self): 
 +        self.mi = MyImage() 
 +    def remote_image(self): 
 +        print("Le serveur envoie une image"
 +        return self.mi.stringData 
 + 
 +# L'objet principal réseau qui tourne 
 +root_obj = ObjetPrincipal() 
 + 
 +reactor.listenTCP(8800, pb.PBServerFactory(root_obj)) 
 +reactor.run() 
 +</file> 
 + 
 +<file python > 
 +import numpy as np 
 +import cv2 
 +import base64 
 +from twisted.internet import reactor 
 +from twisted.spread import pb 
 + 
 + 
 +class GetImage(pb.Copyable): 
 +    def get_image(self, stringData): 
 +        image = np.asarray(bytearray(stringData), dtype="uint8"
 +        image = cv2.imdecode(image, cv2.IMREAD_COLOR) 
 +        print(image.shape) 
 +        cv2.imshow('SERVER', image) 
 +        cv2.waitKey(0) 
 +        cv2.destroyAllWindows() 
 + 
 +class RemoteGetImage(pb.RemoteCopy): 
 +    pass 
 + 
 +pb.setUnjellyableForClass(GetImage, RemoteGetImage) 
 + 
 +class Client: 
 +    """Permet de créer l'objet principal client qui tourne""" 
 +    def __init__(self): 
 +        """self.root_obj_client sera l'objet principal du serveur root_obj""" 
 +        self.root_obj_client = None 
 +        self.gi = GetImage() 
 +    def on_start(self, obj): 
 +        print(f"on_start: got client_accessible object from server = {obj}"
 +        self.root_obj_client = obj 
 +        # Transfert d'une image 
 +        self.root_obj_client.callRemote("image").addCallback(self.gi.get_image) 
 +         
 +def main(): 
 +    clt = Client() 
 +    factory = pb.PBClientFactory() 
 +    reactor.connectTCP("localhost", 8800, factory) 
 +    factory.getRootObject().addCallback(clt.on_start) 
 +    reactor.run() 
 + 
 +main() 
 +</file> 
 + 
 +=====Page suivante: Passing Complex Types===== 
 +  * **[[pb_copyable_passing_complex_types|PB Copyable Passing Complex Types]]**
  
 {{tag>python sb intergalactique twisted perspectivebroker}} {{tag>python sb intergalactique twisted perspectivebroker}}
using_perspective_broker.1669841522.txt.gz · Dernière modification : 2022/11/30 20:52 de serge