blob: 737babb3fd5a94d14142cf334cbcd7bafe358dc7 [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.
# distutils: language = c++
from pyarrow.includes.common cimport *
from pyarrow.includes.libarrow cimport *
cdef extern from "arrow/flight/api.h" namespace "arrow" nogil:
cdef char* CPyServerMiddlewareName\
" arrow::py::flight::kPyServerMiddlewareName"
cdef cppclass CActionType" arrow::flight::ActionType":
c_string type
c_string description
cdef cppclass CAction" arrow::flight::Action":
c_string type
shared_ptr[CBuffer] body
cdef cppclass CFlightResult" arrow::flight::Result":
CFlightResult()
CFlightResult(CFlightResult)
shared_ptr[CBuffer] body
cdef cppclass CBasicAuth" arrow::flight::BasicAuth":
CBasicAuth()
CBasicAuth(CBuffer)
CBasicAuth(CBasicAuth)
c_string username
c_string password
cdef cppclass CResultStream" arrow::flight::ResultStream":
CStatus Next(unique_ptr[CFlightResult]* result)
cdef cppclass CDescriptorType \
" arrow::flight::FlightDescriptor::DescriptorType":
bint operator==(CDescriptorType)
CDescriptorType CDescriptorTypeUnknown\
" arrow::flight::FlightDescriptor::UNKNOWN"
CDescriptorType CDescriptorTypePath\
" arrow::flight::FlightDescriptor::PATH"
CDescriptorType CDescriptorTypeCmd\
" arrow::flight::FlightDescriptor::CMD"
cdef cppclass CFlightDescriptor" arrow::flight::FlightDescriptor":
CDescriptorType type
c_string cmd
vector[c_string] path
CStatus SerializeToString(c_string* out)
@staticmethod
CStatus Deserialize(const c_string& serialized,
CFlightDescriptor* out)
bint operator==(CFlightDescriptor)
cdef cppclass CTicket" arrow::flight::Ticket":
CTicket()
c_string ticket
bint operator==(CTicket)
CStatus SerializeToString(c_string* out)
@staticmethod
CStatus Deserialize(const c_string& serialized, CTicket* out)
cdef cppclass CCriteria" arrow::flight::Criteria":
CCriteria()
c_string expression
cdef cppclass CLocation" arrow::flight::Location":
CLocation()
c_string ToString()
c_bool Equals(const CLocation& other)
@staticmethod
CStatus Parse(c_string& uri_string, CLocation* location)
@staticmethod
CStatus ForGrpcTcp(c_string& host, int port, CLocation* location)
@staticmethod
CStatus ForGrpcTls(c_string& host, int port, CLocation* location)
@staticmethod
CStatus ForGrpcUnix(c_string& path, CLocation* location)
cdef cppclass CFlightEndpoint" arrow::flight::FlightEndpoint":
CFlightEndpoint()
CTicket ticket
vector[CLocation] locations
bint operator==(CFlightEndpoint)
cdef cppclass CFlightInfo" arrow::flight::FlightInfo":
CFlightInfo(CFlightInfo info)
int64_t total_records()
int64_t total_bytes()
CStatus GetSchema(CDictionaryMemo* memo, shared_ptr[CSchema]* out)
CFlightDescriptor& descriptor()
const vector[CFlightEndpoint]& endpoints()
CStatus SerializeToString(c_string* out)
@staticmethod
CStatus Deserialize(const c_string& serialized,
unique_ptr[CFlightInfo]* out)
cdef cppclass CSchemaResult" arrow::flight::SchemaResult":
CSchemaResult(CSchemaResult result)
CStatus GetSchema(CDictionaryMemo* memo, shared_ptr[CSchema]* out)
cdef cppclass CFlightListing" arrow::flight::FlightListing":
CStatus Next(unique_ptr[CFlightInfo]* info)
cdef cppclass CSimpleFlightListing" arrow::flight::SimpleFlightListing":
CSimpleFlightListing(vector[CFlightInfo]&& info)
cdef cppclass CFlightPayload" arrow::flight::FlightPayload":
shared_ptr[CBuffer] descriptor
shared_ptr[CBuffer] app_metadata
CIpcPayload ipc_message
cdef cppclass CFlightDataStream" arrow::flight::FlightDataStream":
shared_ptr[CSchema] schema()
CStatus Next(CFlightPayload*)
cdef cppclass CFlightStreamChunk" arrow::flight::FlightStreamChunk":
CFlightStreamChunk()
shared_ptr[CRecordBatch] data
shared_ptr[CBuffer] app_metadata
cdef cppclass CMetadataRecordBatchReader \
" arrow::flight::MetadataRecordBatchReader":
CResult[shared_ptr[CSchema]] GetSchema()
CStatus Next(CFlightStreamChunk* out)
CStatus ReadAll(shared_ptr[CTable]* table)
CResult[shared_ptr[CRecordBatchReader]] MakeRecordBatchReader\
" arrow::flight::MakeRecordBatchReader"(
shared_ptr[CMetadataRecordBatchReader])
cdef cppclass CMetadataRecordBatchWriter \
" arrow::flight::MetadataRecordBatchWriter"(CRecordBatchWriter):
CStatus Begin(shared_ptr[CSchema] schema,
const CIpcWriteOptions& options)
CStatus WriteMetadata(shared_ptr[CBuffer] app_metadata)
CStatus WriteWithMetadata(const CRecordBatch& batch,
shared_ptr[CBuffer] app_metadata)
cdef cppclass CFlightStreamReader \
" arrow::flight::FlightStreamReader"(CMetadataRecordBatchReader):
void Cancel()
cdef cppclass CFlightMessageReader \
" arrow::flight::FlightMessageReader"(CMetadataRecordBatchReader):
CFlightDescriptor& descriptor()
cdef cppclass CFlightMessageWriter \
" arrow::flight::FlightMessageWriter"(CMetadataRecordBatchWriter):
pass
cdef cppclass CFlightStreamWriter \
" arrow::flight::FlightStreamWriter"(CMetadataRecordBatchWriter):
CStatus DoneWriting()
cdef cppclass CRecordBatchStream \
" arrow::flight::RecordBatchStream"(CFlightDataStream):
CRecordBatchStream(shared_ptr[CRecordBatchReader]& reader,
const CIpcWriteOptions& options)
cdef cppclass CFlightMetadataReader" arrow::flight::FlightMetadataReader":
CStatus ReadMetadata(shared_ptr[CBuffer]* out)
cdef cppclass CFlightMetadataWriter" arrow::flight::FlightMetadataWriter":
CStatus WriteMetadata(const CBuffer& message)
cdef cppclass CServerAuthReader" arrow::flight::ServerAuthReader":
CStatus Read(c_string* token)
cdef cppclass CServerAuthSender" arrow::flight::ServerAuthSender":
CStatus Write(c_string& token)
cdef cppclass CClientAuthReader" arrow::flight::ClientAuthReader":
CStatus Read(c_string* token)
cdef cppclass CClientAuthSender" arrow::flight::ClientAuthSender":
CStatus Write(c_string& token)
cdef cppclass CServerAuthHandler" arrow::flight::ServerAuthHandler":
pass
cdef cppclass CClientAuthHandler" arrow::flight::ClientAuthHandler":
pass
cdef cppclass CServerCallContext" arrow::flight::ServerCallContext":
c_string& peer_identity()
c_string& peer()
CServerMiddleware* GetMiddleware(const c_string& key)
cdef cppclass CTimeoutDuration" arrow::flight::TimeoutDuration":
CTimeoutDuration(double)
cdef cppclass CFlightCallOptions" arrow::flight::FlightCallOptions":
CFlightCallOptions()
CTimeoutDuration timeout
CIpcWriteOptions write_options
vector[pair[c_string, c_string]] headers
cdef cppclass CCertKeyPair" arrow::flight::CertKeyPair":
CCertKeyPair()
c_string pem_cert
c_string pem_key
cdef cppclass CFlightMethod" arrow::flight::FlightMethod":
bint operator==(CFlightMethod)
CFlightMethod CFlightMethodInvalid\
" arrow::flight::FlightMethod::Invalid"
CFlightMethod CFlightMethodHandshake\
" arrow::flight::FlightMethod::Handshake"
CFlightMethod CFlightMethodListFlights\
" arrow::flight::FlightMethod::ListFlights"
CFlightMethod CFlightMethodGetFlightInfo\
" arrow::flight::FlightMethod::GetFlightInfo"
CFlightMethod CFlightMethodGetSchema\
" arrow::flight::FlightMethod::GetSchema"
CFlightMethod CFlightMethodDoGet\
" arrow::flight::FlightMethod::DoGet"
CFlightMethod CFlightMethodDoPut\
" arrow::flight::FlightMethod::DoPut"
CFlightMethod CFlightMethodDoAction\
" arrow::flight::FlightMethod::DoAction"
CFlightMethod CFlightMethodListActions\
" arrow::flight::FlightMethod::ListActions"
CFlightMethod CFlightMethodDoExchange\
" arrow::flight::FlightMethod::DoExchange"
cdef cppclass CCallInfo" arrow::flight::CallInfo":
CFlightMethod method
# This is really std::unordered_multimap, but Cython has no
# bindings for it, so treat it as an opaque class and bind the
# methods we need
cdef cppclass CCallHeaders" arrow::flight::CallHeaders":
cppclass const_iterator:
pair[c_string, c_string] operator*()
const_iterator operator++()
bint operator==(const_iterator)
bint operator!=(const_iterator)
const_iterator cbegin()
const_iterator cend()
cdef cppclass CAddCallHeaders" arrow::flight::AddCallHeaders":
void AddHeader(const c_string& key, const c_string& value)
cdef cppclass CServerMiddleware" arrow::flight::ServerMiddleware":
c_string name()
cdef cppclass CServerMiddlewareFactory\
" arrow::flight::ServerMiddlewareFactory":
pass
cdef cppclass CClientMiddleware" arrow::flight::ClientMiddleware":
pass
cdef cppclass CClientMiddlewareFactory\
" arrow::flight::ClientMiddlewareFactory":
pass
cdef cppclass CFlightServerOptions" arrow::flight::FlightServerOptions":
CFlightServerOptions(const CLocation& location)
CLocation location
unique_ptr[CServerAuthHandler] auth_handler
vector[CCertKeyPair] tls_certificates
c_bool verify_client
c_string root_certificates
vector[pair[c_string, shared_ptr[CServerMiddlewareFactory]]] middleware
cdef cppclass CFlightClientOptions" arrow::flight::FlightClientOptions":
c_string tls_root_certs
c_string cert_chain
c_string private_key
c_string override_hostname
vector[shared_ptr[CClientMiddlewareFactory]] middleware
int64_t write_size_limit_bytes
vector[pair[c_string, CIntStringVariant]] generic_options
c_bool disable_server_verification
@staticmethod
CFlightClientOptions Defaults()
cdef cppclass CFlightClient" arrow::flight::FlightClient":
@staticmethod
CStatus Connect(const CLocation& location,
const CFlightClientOptions& options,
unique_ptr[CFlightClient]* client)
CStatus Authenticate(CFlightCallOptions& options,
unique_ptr[CClientAuthHandler] auth_handler)
CResult[pair[c_string, c_string]] AuthenticateBasicToken(
CFlightCallOptions& options,
const c_string& username,
const c_string& password)
CStatus DoAction(CFlightCallOptions& options, CAction& action,
unique_ptr[CResultStream]* results)
CStatus ListActions(CFlightCallOptions& options,
vector[CActionType]* actions)
CStatus ListFlights(CFlightCallOptions& options, CCriteria criteria,
unique_ptr[CFlightListing]* listing)
CStatus GetFlightInfo(CFlightCallOptions& options,
CFlightDescriptor& descriptor,
unique_ptr[CFlightInfo]* info)
CStatus GetSchema(CFlightCallOptions& options,
CFlightDescriptor& descriptor,
unique_ptr[CSchemaResult]* result)
CStatus DoGet(CFlightCallOptions& options, CTicket& ticket,
unique_ptr[CFlightStreamReader]* stream)
CStatus DoPut(CFlightCallOptions& options,
CFlightDescriptor& descriptor,
shared_ptr[CSchema]& schema,
unique_ptr[CFlightStreamWriter]* stream,
unique_ptr[CFlightMetadataReader]* reader)
CStatus DoExchange(CFlightCallOptions& options,
CFlightDescriptor& descriptor,
unique_ptr[CFlightStreamWriter]* writer,
unique_ptr[CFlightStreamReader]* reader)
cdef cppclass CFlightStatusCode" arrow::flight::FlightStatusCode":
bint operator==(CFlightStatusCode)
CFlightStatusCode CFlightStatusInternal \
" arrow::flight::FlightStatusCode::Internal"
CFlightStatusCode CFlightStatusTimedOut \
" arrow::flight::FlightStatusCode::TimedOut"
CFlightStatusCode CFlightStatusCancelled \
" arrow::flight::FlightStatusCode::Cancelled"
CFlightStatusCode CFlightStatusUnauthenticated \
" arrow::flight::FlightStatusCode::Unauthenticated"
CFlightStatusCode CFlightStatusUnauthorized \
" arrow::flight::FlightStatusCode::Unauthorized"
CFlightStatusCode CFlightStatusUnavailable \
" arrow::flight::FlightStatusCode::Unavailable"
CFlightStatusCode CFlightStatusFailed \
" arrow::flight::FlightStatusCode::Failed"
cdef cppclass FlightStatusDetail" arrow::flight::FlightStatusDetail":
CFlightStatusCode code()
c_string extra_info()
@staticmethod
shared_ptr[FlightStatusDetail] UnwrapStatus(const CStatus& status)
cdef cppclass FlightWriteSizeStatusDetail\
" arrow::flight::FlightWriteSizeStatusDetail":
int64_t limit()
int64_t actual()
@staticmethod
shared_ptr[FlightWriteSizeStatusDetail] UnwrapStatus(
const CStatus& status)
cdef CStatus MakeFlightError" arrow::flight::MakeFlightError" \
(CFlightStatusCode code, const c_string& message)
cdef CStatus MakeFlightError" arrow::flight::MakeFlightError" \
(CFlightStatusCode code,
const c_string& message,
const c_string& extra_info)
# Callbacks for implementing Flight servers
# Use typedef to emulate syntax for std::function<void(..)>
ctypedef CStatus cb_list_flights(object, const CServerCallContext&,
const CCriteria*,
unique_ptr[CFlightListing]*)
ctypedef CStatus cb_get_flight_info(object, const CServerCallContext&,
const CFlightDescriptor&,
unique_ptr[CFlightInfo]*)
ctypedef CStatus cb_get_schema(object, const CServerCallContext&,
const CFlightDescriptor&,
unique_ptr[CSchemaResult]*)
ctypedef CStatus cb_do_put(object, const CServerCallContext&,
unique_ptr[CFlightMessageReader],
unique_ptr[CFlightMetadataWriter])
ctypedef CStatus cb_do_get(object, const CServerCallContext&,
const CTicket&,
unique_ptr[CFlightDataStream]*)
ctypedef CStatus cb_do_exchange(object, const CServerCallContext&,
unique_ptr[CFlightMessageReader],
unique_ptr[CFlightMessageWriter])
ctypedef CStatus cb_do_action(object, const CServerCallContext&,
const CAction&,
unique_ptr[CResultStream]*)
ctypedef CStatus cb_list_actions(object, const CServerCallContext&,
vector[CActionType]*)
ctypedef CStatus cb_result_next(object, unique_ptr[CFlightResult]*)
ctypedef CStatus cb_data_stream_next(object, CFlightPayload*)
ctypedef CStatus cb_server_authenticate(object, CServerAuthSender*,
CServerAuthReader*)
ctypedef CStatus cb_is_valid(object, const c_string&, c_string*)
ctypedef CStatus cb_client_authenticate(object, CClientAuthSender*,
CClientAuthReader*)
ctypedef CStatus cb_get_token(object, c_string*)
ctypedef CStatus cb_middleware_sending_headers(object, CAddCallHeaders*)
ctypedef CStatus cb_middleware_call_completed(object, const CStatus&)
ctypedef CStatus cb_client_middleware_received_headers(
object, const CCallHeaders&)
ctypedef CStatus cb_server_middleware_start_call(
object,
const CCallInfo&,
const CCallHeaders&,
shared_ptr[CServerMiddleware]*)
ctypedef CStatus cb_client_middleware_start_call(
object,
const CCallInfo&,
unique_ptr[CClientMiddleware]*)
cdef extern from "arrow/python/flight.h" namespace "arrow::py::flight" nogil:
cdef cppclass PyFlightServerVtable:
PyFlightServerVtable()
function[cb_list_flights] list_flights
function[cb_get_flight_info] get_flight_info
function[cb_get_schema] get_schema
function[cb_do_put] do_put
function[cb_do_get] do_get
function[cb_do_exchange] do_exchange
function[cb_do_action] do_action
function[cb_list_actions] list_actions
cdef cppclass PyServerAuthHandlerVtable:
PyServerAuthHandlerVtable()
function[cb_server_authenticate] authenticate
function[cb_is_valid] is_valid
cdef cppclass PyClientAuthHandlerVtable:
PyClientAuthHandlerVtable()
function[cb_client_authenticate] authenticate
function[cb_get_token] get_token
cdef cppclass PyFlightServer:
PyFlightServer(object server, PyFlightServerVtable vtable)
CStatus Init(CFlightServerOptions& options)
int port()
CStatus ServeWithSignals() except *
CStatus Shutdown()
CStatus Wait()
cdef cppclass PyServerAuthHandler\
" arrow::py::flight::PyServerAuthHandler"(CServerAuthHandler):
PyServerAuthHandler(object handler, PyServerAuthHandlerVtable vtable)
cdef cppclass PyClientAuthHandler\
" arrow::py::flight::PyClientAuthHandler"(CClientAuthHandler):
PyClientAuthHandler(object handler, PyClientAuthHandlerVtable vtable)
cdef cppclass CPyFlightResultStream\
" arrow::py::flight::PyFlightResultStream"(CResultStream):
CPyFlightResultStream(object generator,
function[cb_result_next] callback)
cdef cppclass CPyFlightDataStream\
" arrow::py::flight::PyFlightDataStream"(CFlightDataStream):
CPyFlightDataStream(object data_source,
unique_ptr[CFlightDataStream] stream)
cdef cppclass CPyGeneratorFlightDataStream\
" arrow::py::flight::PyGeneratorFlightDataStream"\
(CFlightDataStream):
CPyGeneratorFlightDataStream(object generator,
shared_ptr[CSchema] schema,
function[cb_data_stream_next] callback,
const CIpcWriteOptions& options)
cdef cppclass PyServerMiddlewareVtable\
" arrow::py::flight::PyServerMiddleware::Vtable":
PyServerMiddlewareVtable()
function[cb_middleware_sending_headers] sending_headers
function[cb_middleware_call_completed] call_completed
cdef cppclass PyClientMiddlewareVtable\
" arrow::py::flight::PyClientMiddleware::Vtable":
PyClientMiddlewareVtable()
function[cb_middleware_sending_headers] sending_headers
function[cb_client_middleware_received_headers] received_headers
function[cb_middleware_call_completed] call_completed
cdef cppclass CPyServerMiddleware\
" arrow::py::flight::PyServerMiddleware"(CServerMiddleware):
CPyServerMiddleware(object middleware, PyServerMiddlewareVtable vtable)
void* py_object()
cdef cppclass CPyServerMiddlewareFactory\
" arrow::py::flight::PyServerMiddlewareFactory"\
(CServerMiddlewareFactory):
CPyServerMiddlewareFactory(
object factory,
function[cb_server_middleware_start_call] start_call)
cdef cppclass CPyClientMiddleware\
" arrow::py::flight::PyClientMiddleware"(CClientMiddleware):
CPyClientMiddleware(object middleware, PyClientMiddlewareVtable vtable)
cdef cppclass CPyClientMiddlewareFactory\
" arrow::py::flight::PyClientMiddlewareFactory"\
(CClientMiddlewareFactory):
CPyClientMiddlewareFactory(
object factory,
function[cb_client_middleware_start_call] start_call)
cdef CStatus CreateFlightInfo" arrow::py::flight::CreateFlightInfo"(
shared_ptr[CSchema] schema,
CFlightDescriptor& descriptor,
vector[CFlightEndpoint] endpoints,
int64_t total_records,
int64_t total_bytes,
unique_ptr[CFlightInfo]* out)
cdef CStatus CreateSchemaResult" arrow::py::flight::CreateSchemaResult"(
shared_ptr[CSchema] schema,
unique_ptr[CSchemaResult]* out)
cdef CStatus DeserializeBasicAuth\
" arrow::py::flight::DeserializeBasicAuth"(
c_string buf,
unique_ptr[CBasicAuth]* out)
cdef CStatus SerializeBasicAuth" arrow::py::flight::SerializeBasicAuth"(
CBasicAuth basic_auth,
c_string* out)
cdef extern from "arrow/util/variant.h" namespace "arrow" nogil:
cdef cppclass CIntStringVariant" arrow::util::Variant<int, std::string>":
CIntStringVariant()
CIntStringVariant(int)
CIntStringVariant(c_string)