Ejemplo sencillo de Glacier2 con C++
En esta receta se explica cómo utilizar Glacier2 con un típico "Hola Mundo!" en C++
¿Qué es Glacier2?
Glacier2 es un firewall para Ice que permite invocación de objetos remotos en redes privadas. Si los objetos servidores están en una red local y los clientes van a invocar estos objetos desde fuera de la red, el uso de Glacier2 es una buena idea. Podemos verlo como especie de NAT para objetos ICE. Glacier2 presenta una limitación recogida en el manual en la versión de ICE 3.2.0 y es que la comunicación no puede ser no confiable, esto es, no se pueden usar protocolos como UDP, únicamente permite TCP (y SSL).Especificación Slice
En el archivo Slice debes especificar la interfaz que, posteriormente, vas a implementar. Vamos a llamar a la interfaz "Printer" y al método que imprime una cadena pasada por argumentos "printString":module Demo{ interface Printer{ void printString(string s); }; };Una vez tengas este fichero (con el nombre, por ejemplo, "Printer.ice") debes ejecutar lo siguiente para generar los ficheros necesarios:
Implementación de la interfaz
Por convenio, el nombre de la clase que implementa la interfaz especificada en el archivo .ice debe acabar en "I". Por ello, slice2cpp te ha generado 2 archivos: "PrinterI.h" y "PrinterI.cpp" (código del sirviente). Éste último tiene la implementación de la función "printString" vacía, por lo que debes completarla de la siguiente forma:#include \using namespace std; void Demo::PrinterI::printString(const ::std::string& s, const Ice::Current& current) { cout << s << endl; }
[ show comments ]
blog comments powered by Disqus