Hello,
I would like to use thrift's c_glib library to generate code that allows
me to send log messages from C programs to Facebook's scribe. I managed
to generate some code with scribe.thrift specification, and have written
a client code that should send a message to a local scribe instance.
I am using TBinaryProtocol and TFramedTransport (as needed by scribe),
and as a result the message is sent but scribe produces an error:
Thrift: Wed Aug 24 13:57:38 2011 TConnection:workSocket() Negative frame
size -2147418111, remote side not using TFramedTransport?
As you can see in the client code below, I am actually using
TFramedTransport, am I?
What can be the problem?
I am using thrift 0.6.1 and scribe 2.2 on a debian squeeze machine.
/* create a ThriftSocket */
tsocket = g_object_new(THRIFT_TYPE_SOCKET, "hostname", "localhost",
"port", 1464, NULL);
/* create ThriftFramedTransport */
transport = g_object_new(THRIFT_TYPE_FRAMED_TRANSPORT, "transport",
THRIFT_TRANSPORT(tsocket), NULL);
thrift_framed_transport_open(transport, NULL);
assert(thrift_framed_transport_is_open(transport));
/* create a ThriftBinaryProtocol */
tb = g_object_new(THRIFT_TYPE_BINARY_PROTOCOL, "transport",
tsocket, NULL);
protocol = THRIFT_PROTOCOL(tb);
assert(protocol != NULL);
/* create a Scribe message */
message = g_object_new(TYPE_LOG_ENTRY, "category", "test_category",
"message", "test message from C", NULL);
messages = g_ptr_array_new();
g_ptr_array_add(messages,&message);
/* create a Scribe Client */
client = g_object_new(TYPE_SCRIBE_CLIENT, "input_protocol",
protocol, "output_protocol", protocol, NULL);
iface = SCRIBE_IF(client);
assert(thrift_framed_transport_is_open(transport));
scribe_client_log(iface, result, messages,&err);
Thanks for any help,
Michał Ziemba