Union in thrift muestra todos los valores establecidos en c ++
Hice una simple unión de tres campos.
union example{
1:string STRING,
2:i64 INT64,
3:double DOUBLE
}
Y ejemplifico la unión de ejemplo en el cliente como:
example ex;
ex.__set_STRING("Example");
ex.__isset.STRING = true;
Y envíe el ejemplo a través de un método que acepte el ejemplo como argumento
En el servidor, el método que se llama se realiza así:
void get(const example &ex)
{
cout << ex.__isset.STRING << ' ' << ex.__isset.INT64 << ' ' <<
ex.__isset.DOUBLE << endl;
cout << ex << endl;
}
Y curiosamente, la salida para un programa tan pequeño es:
1 1 1
example(STRING="Example", INT64=0, DOUBLE=0)
No sé si esta es la forma correcta de establecer el tipo de unión, pero probé varias combinaciones y ninguna parece funcionar.
Las fuentes del fragmento se pueden encontrar aquí:https://github.com/enriquefynn/union_thrift