hs-asapo-0.10.0: lib/Asapo/Raw/Consumer.hs
{-# LANGUAGE BlockArguments #-}
{-# LANGUAGE CApiFFI #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# OPTIONS_GHC -Wno-unrecognised-pragmas #-}
{-# HLINT ignore "Use camelCase" #-}
module Asapo.Raw.Consumer
( AsapoConsumerHandle (AsapoConsumerHandle),
AsapoMessageMetaHandle (AsapoMessageMetaHandle),
AsapoMessageMetasHandle (AsapoMessageMetasHandle),
AsapoIdListHandle (AsapoIdListHandle),
AsapoDataSetHandle (AsapoDataSetHandle),
AsapoPartialErrorDataHandle (AsapoPartialErrorDataHandle),
AsapoConsumerErrorDataHandle (AsapoConsumerErrorDataHandle),
AsapoConsumerErrorType,
asapo_stream_infos_get_size,
asapo_new_message_meta_handle,
asapo_free_consumer_handle,
asapo_free_message_metas_handle,
asapo_free_id_list_handle,
kNoData,
kEndOfStream,
kStreamFinished,
kUnavailableService,
kInterruptedTransaction,
kLocalIOError,
kWrongInput,
kPartialData,
kUnsupportedClient,
kDataNotInCache,
kUnknownError,
AsapoStreamFilter,
kAllStreams,
kFinishedStreams,
kUnfinishedStreams,
AsapoNetworkConnectionType,
kUndefined,
kAsapoTcp,
kFabric,
asapo_error_get_type,
asapo_create_consumer,
asapo_consumer_generate_new_group_id,
asapo_consumer_set_timeout,
asapo_consumer_reset_last_read_marker,
asapo_consumer_set_last_read_marker,
asapo_consumer_acknowledge,
asapo_consumer_negative_acknowledge,
asapo_consumer_get_unacknowledged_messages,
asapo_id_list_get_size,
asapo_id_list_get_item,
asapo_consumer_get_last_acknowledged_message,
asapo_consumer_current_connection_type,
asapo_consumer_get_stream_list,
asapo_consumer_delete_stream,
asapo_consumer_set_stream_persistent,
asapo_consumer_get_current_size,
asapo_consumer_get_current_dataset_count,
asapo_consumer_get_beamtime_meta,
asapo_consumer_retrieve_data,
asapo_consumer_get_next_dataset,
asapo_consumer_get_last_dataset,
asapo_consumer_get_last_dataset_ingroup,
asapo_consumer_get_by_id,
asapo_consumer_get_last,
asapo_consumer_get_last_ingroup,
asapo_consumer_get_next,
asapo_consumer_get_next_available,
asapo_consumer_query_messages,
asapo_consumer_set_resend_nacs,
asapo_message_data_get_as_chars,
asapo_message_meta_get_name,
asapo_message_meta_get_timestamp,
asapo_message_meta_get_size,
asapo_message_meta_get_id,
asapo_message_meta_get_source,
asapo_message_meta_get_metadata,
asapo_message_meta_get_buf_id,
asapo_message_meta_get_dataset_substream,
asapo_dataset_get_id,
asapo_dataset_get_expected_size,
asapo_dataset_get_size,
asapo_dataset_get_item,
asapo_message_metas_get_size,
asapo_message_metas_get_item,
asapo_error_get_payload_from_partial_error,
asapo_partial_error_get_id,
asapo_partial_error_get_expected_size,
asapo_error_get_payload_from_consumer_error,
asapo_consumer_error_get_id,
asapo_consumer_error_get_next_stream,
)
where
import Asapo.Raw.Common
( AsapoBool,
AsapoErrorHandle (AsapoErrorHandle),
AsapoMessageDataHandle (AsapoMessageDataHandle),
AsapoSourceCredentialsHandle (AsapoSourceCredentialsHandle),
AsapoStreamInfosHandle (AsapoStreamInfosHandle),
AsapoStringHandle (AsapoStringHandle),
ConstCString,
asapo_free_handle,
asapo_new_handle,
)
import Data.Functor ((<$>))
import Data.Int (Int64)
import Data.Word (Word64)
import Foreign.C.ConstPtr (ConstPtr (ConstPtr))
import Foreign.C.Types (CInt (CInt), CLong (CLong), CSize (CSize))
import Foreign.Marshal (with)
import Foreign.Ptr (Ptr)
import Foreign.Storable (Storable)
import System.Clock (TimeSpec)
import System.IO (IO)
import Prelude ()
foreign import capi "asapo/consumer_c.h asapo_stream_infos_get_size" asapo_stream_infos_get_size :: AsapoStreamInfosHandle -> IO CSize
newtype {-# CTYPE "asapo/consumer_c.h" "AsapoConsumerHandle" #-} AsapoConsumerHandle = AsapoConsumerHandle (Ptr ()) deriving (Storable)
newtype {-# CTYPE "asapo/consumer_c.h" "AsapoMessageMetaHandle" #-} AsapoMessageMetaHandle = AsapoMessageMetaHandle (Ptr ()) deriving (Storable)
newtype {-# CTYPE "asapo/consumer_c.h" "AsapoMessageMetasHandle" #-} AsapoMessageMetasHandle = AsapoMessageMetasHandle (Ptr ()) deriving (Storable)
asapo_free_consumer_handle :: AsapoConsumerHandle -> IO ()
asapo_free_consumer_handle (AsapoConsumerHandle ptr) = with ptr asapo_free_handle
asapo_free_message_metas_handle :: AsapoMessageMetasHandle -> IO ()
asapo_free_message_metas_handle (AsapoMessageMetasHandle ptr) = with ptr asapo_free_handle
asapo_new_message_meta_handle :: IO AsapoMessageMetaHandle
asapo_new_message_meta_handle = AsapoMessageMetaHandle <$> asapo_new_handle
newtype {-# CTYPE "asapo/consumer_c.h" "AsapoIdListHandle" #-} AsapoIdListHandle = AsapoIdListHandle (Ptr ()) deriving (Storable)
asapo_free_id_list_handle :: AsapoIdListHandle -> IO ()
asapo_free_id_list_handle (AsapoIdListHandle ptr) = with ptr asapo_free_handle
newtype {-# CTYPE "asapo/consumer_c.h" "AsapoDataSetHandle" #-} AsapoDataSetHandle = AsapoDataSetHandle (Ptr ()) deriving (Storable)
newtype {-# CTYPE "asapo/consumer_c.h" "AsapoPartialErrorDataHandle" #-} AsapoPartialErrorDataHandle = AsapoPartialErrorDataHandle (Ptr ()) deriving (Storable)
newtype {-# CTYPE "asapo/consumer_c.h" "AsapoConsumerErrorDataHandle" #-} AsapoConsumerErrorDataHandle = AsapoConsumerErrorDataHandle (Ptr ()) deriving (Storable)
type AsapoConsumerErrorType = CInt
foreign import capi "asapo/consumer_c.h value kNoData" kNoData :: AsapoConsumerErrorType
foreign import capi "asapo/consumer_c.h value kEndOfStream" kEndOfStream :: AsapoConsumerErrorType
foreign import capi "asapo/consumer_c.h value kStreamFinished" kStreamFinished :: AsapoConsumerErrorType
foreign import capi "asapo/consumer_c.h value kUnavailableService" kUnavailableService :: AsapoConsumerErrorType
foreign import capi "asapo/consumer_c.h value kInterruptedTransaction" kInterruptedTransaction :: AsapoConsumerErrorType
foreign import capi "asapo/consumer_c.h value kLocalIOError" kLocalIOError :: AsapoConsumerErrorType
foreign import capi "asapo/consumer_c.h value kWrongInput" kWrongInput :: AsapoConsumerErrorType
foreign import capi "asapo/consumer_c.h value kPartialData" kPartialData :: AsapoConsumerErrorType
foreign import capi "asapo/consumer_c.h value kUnsupportedClient" kUnsupportedClient :: AsapoConsumerErrorType
foreign import capi "asapo/consumer_c.h value kDataNotInCache" kDataNotInCache :: AsapoConsumerErrorType
foreign import capi "asapo/consumer_c.h value kUnknownError" kUnknownError :: AsapoConsumerErrorType
type AsapoStreamFilter = CInt
foreign import capi "asapo/consumer_c.h value kAllStreams" kAllStreams :: AsapoStreamFilter
foreign import capi "asapo/consumer_c.h value kFinishedStreams" kFinishedStreams :: AsapoStreamFilter
foreign import capi "asapo/consumer_c.h value kUnfinishedStreams" kUnfinishedStreams :: AsapoStreamFilter
type AsapoNetworkConnectionType = CInt
foreign import capi "asapo/consumer_c.h value kUndefined" kUndefined :: AsapoNetworkConnectionType
foreign import capi "asapo/consumer_c.h value kAsapoTcp" kAsapoTcp :: AsapoNetworkConnectionType
foreign import capi "asapo/consumer_c.h value kFabric" kFabric :: AsapoNetworkConnectionType
foreign import capi "asapo/consumer_c.h asapo_error_get_type" asapo_error_get_type :: AsapoErrorHandle -> IO AsapoConsumerErrorType
foreign import capi "asapo/consumer_c.h asapo_create_consumer"
asapo_create_consumer ::
-- server_name
ConstCString ->
-- source_path
ConstCString ->
-- has filesystem
AsapoBool ->
AsapoSourceCredentialsHandle ->
Ptr AsapoErrorHandle ->
IO AsapoConsumerHandle
foreign import capi "asapo/consumer_c.h asapo_consumer_generate_new_group_id" asapo_consumer_generate_new_group_id :: AsapoConsumerHandle -> Ptr AsapoErrorHandle -> IO AsapoStringHandle
foreign import capi "asapo/consumer_c.h asapo_consumer_set_timeout" asapo_consumer_set_timeout :: AsapoConsumerHandle -> Word64 -> IO ()
foreign import capi "asapo/consumer_c.h asapo_consumer_reset_last_read_marker"
asapo_consumer_reset_last_read_marker ::
AsapoConsumerHandle ->
-- group_id
AsapoStringHandle ->
-- stream
ConstCString ->
Ptr AsapoErrorHandle ->
IO CInt
foreign import capi "asapo/consumer_c.h asapo_consumer_set_last_read_marker"
asapo_consumer_set_last_read_marker ::
AsapoConsumerHandle ->
-- group_id
AsapoStringHandle ->
-- value
Word64 ->
-- stream
ConstCString ->
Ptr AsapoErrorHandle ->
IO CInt
foreign import capi "asapo/consumer_c.h asapo_consumer_acknowledge"
asapo_consumer_acknowledge ::
AsapoConsumerHandle ->
-- group_id
AsapoStringHandle ->
-- id
Word64 ->
-- stream
ConstCString ->
Ptr AsapoErrorHandle ->
IO CInt
foreign import capi "asapo/consumer_c.h asapo_consumer_negative_acknowledge"
asapo_consumer_negative_acknowledge ::
AsapoConsumerHandle ->
-- group_id
AsapoStringHandle ->
-- id
Word64 ->
-- delay_ms
Word64 ->
-- stream
ConstCString ->
Ptr AsapoErrorHandle ->
IO CInt
foreign import capi "asapo/consumer_c.h asapo_consumer_get_unacknowledged_messages"
asapo_consumer_get_unacknowledged_messages ::
AsapoConsumerHandle ->
-- group_id
AsapoStringHandle ->
-- from id
Word64 ->
-- to id
Word64 ->
-- stream
ConstCString ->
Ptr AsapoErrorHandle ->
IO AsapoIdListHandle
foreign import capi "asapo/consumer_c.h asapo_id_list_get_size" asapo_id_list_get_size :: AsapoIdListHandle -> IO CSize
foreign import capi "asapo/consumer_c.h asapo_id_list_get_item" asapo_id_list_get_item :: AsapoIdListHandle -> CSize -> IO Word64
foreign import capi "asapo/consumer_c.h asapo_consumer_get_last_acknowledged_message"
asapo_consumer_get_last_acknowledged_message ::
AsapoConsumerHandle ->
-- group_id
AsapoStringHandle ->
-- stream
ConstCString ->
Ptr AsapoErrorHandle ->
IO CLong
-- foreign import capi "asapo/consumer_c.h asapo_consumer_force_no_rdma" asapo_consumer_force_no_rdma :: AsapoConsumerHandle -> IO ()
foreign import capi "asapo/consumer_c.h asapo_consumer_current_connection_type" asapo_consumer_current_connection_type :: AsapoConsumerHandle -> IO AsapoNetworkConnectionType
-- Again, a typo in the original (no "asapo_" prefix, but corrected in the Haskell code)
-- foreign import capi "asapo/consumer_c.h enable_new_monitoring_api_format" asapo_enable_new_monitoring_api_format :: AsapoConsumerHandle -> AsapoBool -> Ptr AsapoErrorHandle -> IO CInt
foreign import capi "asapo/consumer_c.h asapo_consumer_get_stream_list"
asapo_consumer_get_stream_list ::
AsapoConsumerHandle ->
-- stream
ConstCString ->
AsapoStreamFilter ->
Ptr AsapoErrorHandle ->
IO AsapoStreamInfosHandle
foreign import capi "asapo/consumer_c.h asapo_consumer_delete_stream"
asapo_consumer_delete_stream ::
AsapoConsumerHandle ->
-- stream
ConstCString ->
-- delete_meta
AsapoBool ->
-- error_on_not_exist
AsapoBool ->
Ptr AsapoErrorHandle ->
IO CInt
foreign import capi "asapo/consumer_c.h asapo_consumer_set_stream_persistent"
asapo_consumer_set_stream_persistent ::
AsapoConsumerHandle ->
-- stream
ConstCString ->
Ptr AsapoErrorHandle ->
IO CInt
foreign import capi "asapo/consumer_c.h asapo_consumer_get_current_size"
asapo_consumer_get_current_size ::
AsapoConsumerHandle ->
-- stream
ConstCString ->
Ptr AsapoErrorHandle ->
IO Int64
foreign import capi "asapo/consumer_c.h asapo_consumer_get_current_dataset_count"
asapo_consumer_get_current_dataset_count ::
AsapoConsumerHandle ->
-- stream
ConstCString ->
-- include_incomplete
AsapoBool ->
Ptr AsapoErrorHandle ->
IO Int64
foreign import capi "asapo/consumer_c.h asapo_consumer_get_beamtime_meta" asapo_consumer_get_beamtime_meta :: AsapoConsumerHandle -> Ptr AsapoErrorHandle -> IO AsapoStringHandle
foreign import capi "asapo/consumer_c.h asapo_consumer_retrieve_data"
asapo_consumer_retrieve_data ::
AsapoConsumerHandle ->
AsapoMessageMetaHandle ->
Ptr AsapoMessageDataHandle ->
Ptr AsapoErrorHandle ->
IO CInt
foreign import capi "asapo/consumer_c.h asapo_consumer_get_next_dataset"
asapo_consumer_get_next_dataset ::
AsapoConsumerHandle ->
-- group_id
AsapoStringHandle ->
-- min_size
Word64 ->
-- stream
ConstCString ->
Ptr AsapoErrorHandle ->
IO AsapoDataSetHandle
foreign import capi "asapo/consumer_c.h asapo_consumer_get_last_dataset"
asapo_consumer_get_last_dataset ::
AsapoConsumerHandle ->
-- min_size
Word64 ->
-- stream
ConstCString ->
Ptr AsapoErrorHandle ->
IO AsapoDataSetHandle
foreign import capi "asapo/consumer_c.h asapo_consumer_get_last_dataset_ingroup"
asapo_consumer_get_last_dataset_ingroup ::
AsapoConsumerHandle ->
-- group_id
AsapoStringHandle ->
-- min_size
Word64 ->
-- stream
ConstCString ->
Ptr AsapoErrorHandle ->
IO AsapoDataSetHandle
foreign import capi "asapo/consumer_c.h asapo_consumer_get_by_id"
asapo_consumer_get_by_id ::
AsapoConsumerHandle ->
-- id
Word64 ->
Ptr AsapoMessageMetaHandle ->
Ptr AsapoMessageDataHandle ->
-- stream
ConstCString ->
Ptr AsapoErrorHandle ->
IO CInt
foreign import capi "asapo/consumer_c.h asapo_consumer_get_last"
asapo_consumer_get_last ::
AsapoConsumerHandle ->
Ptr AsapoMessageMetaHandle ->
Ptr AsapoMessageDataHandle ->
-- stream
ConstCString ->
Ptr AsapoErrorHandle ->
IO CInt
foreign import capi "asapo/consumer_c.h asapo_consumer_get_last_ingroup"
asapo_consumer_get_last_ingroup ::
AsapoConsumerHandle ->
-- group_id
AsapoStringHandle ->
Ptr AsapoMessageMetaHandle ->
Ptr AsapoMessageDataHandle ->
-- stream
ConstCString ->
Ptr AsapoErrorHandle ->
IO CInt
foreign import capi "asapo/consumer_c.h asapo_consumer_get_next"
asapo_consumer_get_next ::
AsapoConsumerHandle ->
-- group id
AsapoStringHandle ->
Ptr AsapoMessageMetaHandle ->
Ptr AsapoMessageDataHandle ->
-- stream
ConstCString ->
Ptr AsapoErrorHandle ->
IO CInt
foreign import capi "asapo/consumer_c.h asapo_consumer_get_next_available"
asapo_consumer_get_next_available ::
AsapoConsumerHandle ->
-- group id
AsapoStringHandle ->
Ptr AsapoMessageMetaHandle ->
Ptr AsapoMessageDataHandle ->
-- stream
ConstCString ->
Ptr AsapoErrorHandle ->
IO CInt
foreign import capi "asapo/consumer_c.h asapo_consumer_query_messages"
asapo_consumer_query_messages ::
AsapoConsumerHandle ->
-- query
ConstCString ->
-- stream
ConstCString ->
Ptr AsapoErrorHandle ->
IO AsapoMessageMetasHandle
foreign import capi "asapo/consumer_c.h asapo_consumer_set_resend_nacs"
asapo_consumer_set_resend_nacs ::
AsapoConsumerHandle ->
-- resend
AsapoBool ->
-- delay_ms
Word64 ->
-- resend_attempts
Word64 ->
IO ()
foreign import capi "asapo/consumer_c.h asapo_message_data_get_as_chars" asapo_message_data_get_as_chars :: AsapoMessageDataHandle -> IO ConstCString
foreign import capi "asapo/consumer_c.h asapo_message_meta_get_name" asapo_message_meta_get_name :: AsapoMessageMetaHandle -> IO ConstCString
foreign import capi "asapo/consumer_c.h asapo_message_meta_get_timestamp" asapo_message_meta_get_timestamp :: AsapoMessageMetaHandle -> Ptr TimeSpec -> IO ()
foreign import capi "asapo/consumer_c.h asapo_message_meta_get_size" asapo_message_meta_get_size :: AsapoMessageMetaHandle -> IO Word64
foreign import capi "asapo/consumer_c.h asapo_message_meta_get_id" asapo_message_meta_get_id :: AsapoMessageMetaHandle -> IO Word64
foreign import capi "asapo/consumer_c.h asapo_message_meta_get_source" asapo_message_meta_get_source :: AsapoMessageMetaHandle -> IO ConstCString
foreign import capi "asapo/consumer_c.h asapo_message_meta_get_metadata" asapo_message_meta_get_metadata :: AsapoMessageMetaHandle -> IO ConstCString
foreign import capi "asapo/consumer_c.h asapo_message_meta_get_buf_id" asapo_message_meta_get_buf_id :: AsapoMessageMetaHandle -> IO Word64
foreign import capi "asapo/consumer_c.h asapo_message_meta_get_dataset_substream" asapo_message_meta_get_dataset_substream :: AsapoMessageMetaHandle -> IO Word64
foreign import capi "asapo/consumer_c.h asapo_dataset_get_id" asapo_dataset_get_id :: AsapoDataSetHandle -> IO Word64
foreign import capi "asapo/consumer_c.h asapo_dataset_get_expected_size" asapo_dataset_get_expected_size :: AsapoDataSetHandle -> IO Word64
foreign import capi "asapo/consumer_c.h asapo_dataset_get_size" asapo_dataset_get_size :: AsapoDataSetHandle -> IO CSize
foreign import capi "asapo/consumer_c.h asapo_dataset_get_item" asapo_dataset_get_item :: AsapoDataSetHandle -> CSize -> IO AsapoMessageMetaHandle
foreign import capi "asapo/consumer_c.h asapo_message_metas_get_size" asapo_message_metas_get_size :: AsapoMessageMetasHandle -> IO CSize
foreign import capi "asapo/consumer_c.h asapo_message_metas_get_item" asapo_message_metas_get_item :: AsapoMessageMetasHandle -> CSize -> IO AsapoMessageMetaHandle
foreign import capi "asapo/consumer_c.h asapo_error_get_payload_from_partial_error" asapo_error_get_payload_from_partial_error :: AsapoErrorHandle -> IO AsapoPartialErrorDataHandle
foreign import capi "asapo/consumer_c.h asapo_partial_error_get_id" asapo_partial_error_get_id :: AsapoPartialErrorDataHandle -> IO Word64
foreign import capi "asapo/consumer_c.h asapo_partial_error_get_expected_size" asapo_partial_error_get_expected_size :: AsapoPartialErrorDataHandle -> IO Word64
foreign import capi "asapo/consumer_c.h asapo_error_get_payload_from_consumer_error" asapo_error_get_payload_from_consumer_error :: AsapoErrorHandle -> IO AsapoConsumerErrorDataHandle
foreign import capi "asapo/consumer_c.h asapo_consumer_error_get_id" asapo_consumer_error_get_id :: AsapoConsumerErrorDataHandle -> IO Word64
foreign import capi "asapo/consumer_c.h asapo_consumer_error_get_next_stream" asapo_consumer_error_get_next_stream :: AsapoConsumerErrorDataHandle -> IO ConstCString