CHAPITRE 04 / WEBFRONT
Appeler le C++ depuis TypeScript
Comprendre les données et les Promises.
Un appel, une réponse asynchrone
Le starter attend le handshake via webFront.ready, puis appelle life.step avec la grille. L’appel JavaScript renvoie toujours une Promise, même si la fonction C++ est void. Attendez-la ou gérez son rejet. Le code ci-dessous s’insère dans une fonction async ; cells est la grille Uint8Array du starter.
try {
await webFront.ready;
const step = webFront.cppFunction('life.step');
const next = await step(cells);
// Update your React state with next.
} catch (error) {
console.error(error);
// Stop playback and show the error in your UI.
}128 octets, 1 024 cellules
Le pont encode std::bitset<1024> en Uint8Array de 128 octets, bit de poids faible en premier. Il accepte des scalaires, chaînes, tuples, tableaux numériques typés et bitsets compactés ; pas des objets JavaScript arbitraires. Les chaînes ont une longueur encodée sur 16 bits. Les bitsets doivent avoir la taille exacte et des bits de remplissage nuls.
Préserver l’ordre et traiter les erreurs
N’envoyez qu’une génération à la fois : attendez sa réponse avant la suivante. Un reset pendant un appel doit invalider la réponse devenue obsolète ; le starter utilise une révision de session. Une fonction absente, une exception ou une déconnexion rejette la Promise : arrêtez la lecture et montrez l’erreur. Dans l’autre sens, ui.jsFunction(name) est sans retour ; ui.jsFunction<R>(name) renvoie un std::future<R>. Les callbacks tournent sur le thread serveur : ne le bloquez pas.
Question