blob: 6b273dc9e5a8f5c16347793a837d71fe9ec01c17 [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/api.h>
#include <arrow-flight-glib/server.h>
arrow::flight::FlightDataStream *
gaflight_data_stream_get_raw(GAFlightDataStream *stream);
GAFlightMessageReader *
gaflight_message_reader_new_raw(
arrow::flight::FlightMessageReader *flight_reader,
gboolean is_owner);
arrow::flight::FlightMessageReader *
gaflight_message_reader_get_raw(GAFlightMessageReader *reader);
GAFlightServerCallContext *
gaflight_server_call_context_new_raw(
const arrow::flight::ServerCallContext *flight_call_context);
const arrow::flight::ServerCallContext *
gaflight_server_call_context_get_raw(GAFlightServerCallContext *call_context);
GAFlightServerAuthSender *
gaflight_server_auth_sender_new_raw(
arrow::flight::ServerAuthSender *flight_sender);
arrow::flight::ServerAuthSender *
gaflight_server_auth_sender_get_raw(GAFlightServerAuthSender *sender);
GAFlightServerAuthReader *
gaflight_server_auth_reader_new_raw(
arrow::flight::ServerAuthReader *flight_reader);
arrow::flight::ServerAuthReader *
gaflight_server_auth_reader_get_raw(GAFlightServerAuthReader *reader);
std::shared_ptr<arrow::flight::ServerAuthHandler>
gaflight_server_auth_handler_get_raw(GAFlightServerAuthHandler *handler);
arrow::flight::FlightServerOptions *
gaflight_server_options_get_raw(GAFlightServerOptions *options);
struct _GAFlightServableInterface
{
GTypeInterface parent_iface;
arrow::flight::FlightServerBase *(*get_raw)(GAFlightServable *servable);
};
arrow::flight::FlightServerBase *
gaflight_servable_get_raw(GAFlightServable *servable);
namespace gaflight {
class DataStream : public arrow::flight::FlightDataStream {
public:
explicit DataStream(GAFlightDataStream *gastream) :
arrow::flight::FlightDataStream(),
gastream_(gastream) {
}
~DataStream() override {
g_object_unref(gastream_);
}
std::shared_ptr<arrow::Schema> schema() override {
auto stream = gaflight_data_stream_get_raw(gastream_);
return stream->schema();
}
arrow::Result<arrow::flight::FlightPayload> GetSchemaPayload() override {
auto stream = gaflight_data_stream_get_raw(gastream_);
return stream->GetSchemaPayload();
}
arrow::Result<arrow::flight::FlightPayload> Next() override {
auto stream = gaflight_data_stream_get_raw(gastream_);
return stream->Next();
}
private:
GAFlightDataStream *gastream_;
};
};