blob: e3a469098b32cbafb07a4b80b67420716b938c4c [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
#pragma once
#include <arrow-flight-glib/common.h>
G_BEGIN_DECLS
#define GAFLIGHT_TYPE_DATA_STREAM (gaflight_data_stream_get_type())
GAFLIGHT_AVAILABLE_IN_6_0
G_DECLARE_DERIVABLE_TYPE(
GAFlightDataStream, gaflight_data_stream, GAFLIGHT, DATA_STREAM, GObject)
struct _GAFlightDataStreamClass
{
GObjectClass parent_class;
};
#define GAFLIGHT_TYPE_RECORD_BATCH_STREAM (gaflight_record_batch_stream_get_type())
GAFLIGHT_AVAILABLE_IN_6_0
G_DECLARE_DERIVABLE_TYPE(GAFlightRecordBatchStream,
gaflight_record_batch_stream,
GAFLIGHT,
RECORD_BATCH_STREAM,
GAFlightDataStream)
struct _GAFlightRecordBatchStreamClass
{
GAFlightDataStreamClass parent_class;
};
GAFLIGHT_AVAILABLE_IN_6_0
GAFlightRecordBatchStream *
gaflight_record_batch_stream_new(GArrowRecordBatchReader *reader,
GArrowWriteOptions *options);
#define GAFLIGHT_TYPE_MESSAGE_READER (gaflight_message_reader_get_type())
GAFLIGHT_AVAILABLE_IN_14_0
G_DECLARE_DERIVABLE_TYPE(GAFlightMessageReader,
gaflight_message_reader,
GAFLIGHT,
MESSAGE_READER,
GAFlightRecordBatchReader)
struct _GAFlightMessageReaderClass
{
GAFlightRecordBatchReaderClass parent_class;
};
GAFLIGHT_AVAILABLE_IN_14_0
GAFlightDescriptor *
gaflight_message_reader_get_descriptor(GAFlightMessageReader *reader);
#define GAFLIGHT_TYPE_METADATA_WRITER (gaflight_metadata_writer_get_type())
GAFLIGHT_AVAILABLE_IN_18_0
G_DECLARE_DERIVABLE_TYPE(
GAFlightMetadataWriter, gaflight_metadata_writer, GAFLIGHT, METADATA_WRITER, GObject)
struct _GAFlightMetadataWriterClass
{
GObjectClass parent_class;
};
GAFLIGHT_AVAILABLE_IN_18_0
gboolean
gaflight_metadata_writer_write(GAFlightMetadataWriter *writer,
GArrowBuffer *metadata,
GError **error);
#define GAFLIGHT_TYPE_SERVER_CALL_CONTEXT (gaflight_server_call_context_get_type())
GAFLIGHT_AVAILABLE_IN_5_0
G_DECLARE_DERIVABLE_TYPE(GAFlightServerCallContext,
gaflight_server_call_context,
GAFLIGHT,
SERVER_CALL_CONTEXT,
GObject)
struct _GAFlightServerCallContextClass
{
GObjectClass parent_class;
};
GAFLIGHT_AVAILABLE_IN_14_0
void
gaflight_server_call_context_foreach_incoming_header(GAFlightServerCallContext *context,
GAFlightHeaderFunc func,
gpointer user_data);
#define GAFLIGHT_TYPE_SERVER_AUTH_SENDER (gaflight_server_auth_sender_get_type())
GAFLIGHT_AVAILABLE_IN_12_0
G_DECLARE_DERIVABLE_TYPE(GAFlightServerAuthSender,
gaflight_server_auth_sender,
GAFLIGHT,
SERVER_AUTH_SENDER,
GObject)
struct _GAFlightServerAuthSenderClass
{
GObjectClass parent_class;
};
GAFLIGHT_AVAILABLE_IN_12_0
gboolean
gaflight_server_auth_sender_write(GAFlightServerAuthSender *sender,
GBytes *message,
GError **error);
#define GAFLIGHT_TYPE_SERVER_AUTH_READER (gaflight_server_auth_reader_get_type())
GAFLIGHT_AVAILABLE_IN_12_0
G_DECLARE_DERIVABLE_TYPE(GAFlightServerAuthReader,
gaflight_server_auth_reader,
GAFLIGHT,
SERVER_AUTH_READER,
GObject)
struct _GAFlightServerAuthReaderClass
{
GObjectClass parent_class;
};
GAFLIGHT_AVAILABLE_IN_12_0
GBytes *
gaflight_server_auth_reader_read(GAFlightServerAuthReader *reader, GError **error);
#define GAFLIGHT_TYPE_SERVER_AUTH_HANDLER (gaflight_server_auth_handler_get_type())
GAFLIGHT_AVAILABLE_IN_12_0
G_DECLARE_DERIVABLE_TYPE(GAFlightServerAuthHandler,
gaflight_server_auth_handler,
GAFLIGHT,
SERVER_AUTH_HANDLER,
GObject)
struct _GAFlightServerAuthHandlerClass
{
GObjectClass parent_class;
};
#define GAFLIGHT_TYPE_SERVER_CUSTOM_AUTH_HANDLER \
(gaflight_server_custom_auth_handler_get_type())
GAFLIGHT_AVAILABLE_IN_12_0
G_DECLARE_DERIVABLE_TYPE(GAFlightServerCustomAuthHandler,
gaflight_server_custom_auth_handler,
GAFLIGHT,
SERVER_CUSTOM_AUTH_HANDLER,
GAFlightServerAuthHandler)
/**
* GAFlightServerCustomAuthHandlerClass:
* @authenticate: Authenticates the client on initial connection. The server
* can send and read responses from the client at any time.
* @is_valid: Validates a per-call client token.
*
* Since: 12.0.0
*/
struct _GAFlightServerCustomAuthHandlerClass
{
GAFlightServerAuthHandlerClass parent_class;
void (*authenticate)(GAFlightServerCustomAuthHandler *handler,
GAFlightServerCallContext *context,
GAFlightServerAuthSender *sender,
GAFlightServerAuthReader *reader,
GError **error);
GBytes *(*is_valid)(GAFlightServerCustomAuthHandler *handler,
GAFlightServerCallContext *context,
GBytes *token,
GError **error);
};
GAFLIGHT_AVAILABLE_IN_12_0
void
gaflight_server_custom_auth_handler_authenticate(GAFlightServerCustomAuthHandler *handler,
GAFlightServerCallContext *context,
GAFlightServerAuthSender *sender,
GAFlightServerAuthReader *reader,
GError **error);
GAFLIGHT_AVAILABLE_IN_12_0
GBytes *
gaflight_server_custom_auth_handler_is_valid(GAFlightServerCustomAuthHandler *handler,
GAFlightServerCallContext *context,
GBytes *token,
GError **error);
#define GAFLIGHT_TYPE_SERVER_OPTIONS (gaflight_server_options_get_type())
GAFLIGHT_AVAILABLE_IN_5_0
G_DECLARE_DERIVABLE_TYPE(
GAFlightServerOptions, gaflight_server_options, GAFLIGHT, SERVER_OPTIONS, GObject)
struct _GAFlightServerOptionsClass
{
GObjectClass parent_class;
};
GAFLIGHT_AVAILABLE_IN_5_0
GAFlightServerOptions *
gaflight_server_options_new(GAFlightLocation *location);
#define GAFLIGHT_TYPE_SERVABLE (gaflight_servable_get_type())
GAFLIGHT_AVAILABLE_IN_9_0
G_DECLARE_INTERFACE(GAFlightServable, gaflight_servable, GAFLIGHT, SERVABLE, GObject)
#define GAFLIGHT_TYPE_SERVER (gaflight_server_get_type())
GAFLIGHT_AVAILABLE_IN_5_0
G_DECLARE_DERIVABLE_TYPE(GAFlightServer, gaflight_server, GAFLIGHT, SERVER, GObject)
/**
* GAFlightServerClass:
* @list_flights: A virtual function to implement `ListFlights` API.
* @do_get: A virtual function to implement `DoGet` API.
* @do_put: A virtual function to implement `DoPut` API.
*
* Since: 5.0.0
*/
struct _GAFlightServerClass
{
GObjectClass parent_class;
GList *(*list_flights)(GAFlightServer *server,
GAFlightServerCallContext *context,
GAFlightCriteria *criteria,
GError **error);
GAFlightInfo *(*get_flight_info)(GAFlightServer *server,
GAFlightServerCallContext *context,
GAFlightDescriptor *request,
GError **error);
GAFlightDataStream *(*do_get)(GAFlightServer *server,
GAFlightServerCallContext *context,
GAFlightTicket *ticket,
GError **error);
gboolean (*do_put)(GAFlightServer *server,
GAFlightServerCallContext *context,
GAFlightMessageReader *reader,
GAFlightMetadataWriter *writer,
GError **error);
};
GAFLIGHT_AVAILABLE_IN_5_0
gboolean
gaflight_server_listen(GAFlightServer *server,
GAFlightServerOptions *options,
GError **error);
GAFLIGHT_AVAILABLE_IN_5_0
gint
gaflight_server_get_port(GAFlightServer *server);
GAFLIGHT_AVAILABLE_IN_5_0
gboolean
gaflight_server_shutdown(GAFlightServer *server, GError **error);
GAFLIGHT_AVAILABLE_IN_5_0
gboolean
gaflight_server_wait(GAFlightServer *server, GError **error);
GAFLIGHT_AVAILABLE_IN_5_0
GList *
gaflight_server_list_flights(GAFlightServer *server,
GAFlightServerCallContext *context,
GAFlightCriteria *criteria,
GError **error);
GAFLIGHT_AVAILABLE_IN_9_0
GAFlightInfo *
gaflight_server_get_flight_info(GAFlightServer *server,
GAFlightServerCallContext *context,
GAFlightDescriptor *request,
GError **error);
GAFLIGHT_AVAILABLE_IN_6_0
GAFlightDataStream *
gaflight_server_do_get(GAFlightServer *server,
GAFlightServerCallContext *context,
GAFlightTicket *ticket,
GError **error);
GAFLIGHT_AVAILABLE_IN_18_0
gboolean
gaflight_server_do_put(GAFlightServer *server,
GAFlightServerCallContext *context,
GAFlightMessageReader *reader,
GAFlightMetadataWriter *writer,
GError **error);
G_END_DECLS