Pavel Paulau created THRIFT-3297: ------------------------------------ Summary: c_glib: a abstract base class is not generated Key: THRIFT-3297 URL: https://issues.apache.org/jira/browse/THRIFT-3297 Project: Thrift Issue Type: Bug Components: C glib - Compiler, C glib - Library Affects Versions: 0.9.1 Reporter: Pavel Paulau
The tutorial says: {quote} For each service the Thrift compiler generates an abstract base class from which handler implementations should inherit. In our case TutorialCalculatorHandler inherits from CalculatorHandler, defined in gen-c_glib/calculator.h. {quote} However, when I run {code} thrift -r --gen c_glib tutorial.thrift {code} I get: {code} /** * Autogenerated by Thrift Compiler (0.9.1) * * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING * @generated */ #ifndef CALCULATOR_H #define CALCULATOR_H #include "tutorial_types.h" #include "shared_service.h" /* Calculator service interface */ typedef struct _CalculatorIf CalculatorIf; /* dummy object */ struct _CalculatorIfInterface { GTypeInterface parent; gboolean (*ping) (CalculatorIf *iface, GError **error); gboolean (*add) (CalculatorIf *iface, gint32* _return, const gint32 num1, const gint32 num2, GError **error); gboolean (*calculate) (CalculatorIf *iface, gint32* _return, const gint32 logid, const Work * w, InvalidOperation ** ouch, GError **error); gboolean (*zip) (CalculatorIf *iface, GError **error); }; typedef struct _CalculatorIfInterface CalculatorIfInterface; GType calculator_if_get_type (void); #define TYPE_CALCULATOR_IF (calculator_if_get_type()) #define CALCULATOR_IF(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CALCULATOR_IF, CalculatorIf)) #define IS_CALCULATOR_IF(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CALCULATOR_IF)) #define CALCULATOR_IF_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), TYPE_CALCULATOR_IF, CalculatorIfInterface)) gboolean calculator_if_ping (CalculatorIf *iface, GError **error); gboolean calculator_if_add (CalculatorIf *iface, gint32* _return, const gint32 num1, const gint32 num2, GError **error); gboolean calculator_if_calculate (CalculatorIf *iface, gint32* _return, const gint32 logid, const Work * w, InvalidOperation ** ouch, GError **error); gboolean calculator_if_zip (CalculatorIf *iface, GError **error); /* Calculator service client */ struct _CalculatorClient { GObject parent; ThriftProtocol *input_protocol; ThriftProtocol *output_protocol; }; typedef struct _CalculatorClient CalculatorClient; struct _CalculatorClientClass { GObjectClass parent; }; typedef struct _CalculatorClientClass CalculatorClientClass; GType calculator_client_get_type (void); #define TYPE_CALCULATOR_CLIENT (calculator_client_get_type()) #define CALCULATOR_CLIENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_CALCULATOR_CLIENT, CalculatorClient)) #define CALCULATOR_CLIENT_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), TYPE_CALCULATOR_CLIENT, CalculatorClientClass)) #define CALCULATOR_IS_CLIENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_CALCULATOR_CLIENT)) #define CALCULATOR_IS_CLIENT_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), TYPE_CALCULATOR_CLIENT)) #define CALCULATOR_CLIENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_CALCULATOR_CLIENT, CalculatorClientClass)) gboolean calculator_client_ping (CalculatorIf * iface, GError ** error); gboolean calculator_client_send_ping (CalculatorIf * iface, GError ** error); gboolean calculator_client_recv_ping (CalculatorIf * iface, GError ** error); gboolean calculator_client_add (CalculatorIf * iface, gint32* _return, const gint32 num1, const gint32 num2, GError ** error); gboolean calculator_client_send_add (CalculatorIf * iface, const gint32 num1, const gint32 num2, GError ** error); gboolean calculator_client_recv_add (CalculatorIf * iface, gint32* _return, GError ** error); gboolean calculator_client_calculate (CalculatorIf * iface, gint32* _return, const gint32 logid, const Work * w, InvalidOperation ** ouch, GError ** error); gboolean calculator_client_send_calculate (CalculatorIf * iface, const gint32 logid, const Work * w, GError ** error); gboolean calculator_client_recv_calculate (CalculatorIf * iface, gint32* _return, InvalidOperation ** ouch, GError ** error); gboolean calculator_client_zip (CalculatorIf * iface, GError ** error); gboolean calculator_client_send_zip (CalculatorIf * iface, GError ** error); void calculator_client_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec); void calculator_client_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec); #endif /* CALCULATOR_H */ {code} There is no definition in other files either: {code} $ grep -iR handler gen-c_glib $ {code} What am I missing? -- This message was sent by Atlassian JIRA (v6.3.4#6332)