module System.Mesos.Raw.Scheduler where
import System.Mesos.Internal
import System.Mesos.Raw.Credential
import System.Mesos.Raw.ExecutorId
import System.Mesos.Raw.Filters
import System.Mesos.Raw.FrameworkId
import System.Mesos.Raw.FrameworkInfo
import System.Mesos.Raw.MasterInfo
import System.Mesos.Raw.Offer
import System.Mesos.Raw.OfferId
import System.Mesos.Raw.Request
import System.Mesos.Raw.SlaveId
import System.Mesos.Raw.TaskId
import System.Mesos.Raw.TaskInfo
import System.Mesos.Raw.TaskStatus
type SchedulerPtr = Ptr Scheduler
data Scheduler = Scheduler
{ schedulerImpl :: SchedulerPtr
, rawSchedulerRegistered :: FunPtr RawSchedulerRegistered
, rawSchedulerReRegistered :: FunPtr RawSchedulerReRegistered
, rawSchedulerDisconnected :: FunPtr RawSchedulerDisconnected
, rawSchedulerResourceOffers :: FunPtr RawSchedulerResourceOffers
, rawSchedulerOfferRescinded :: FunPtr RawSchedulerOfferRescinded
, rawSchedulerStatusUpdate :: FunPtr RawSchedulerStatusUpdate
, rawSchedulerFrameworkMessage :: FunPtr RawSchedulerFrameworkMessage
, rawSchedulerSlaveLost :: FunPtr RawSchedulerSlaveLost
, rawSchedulerExecutorLost :: FunPtr RawSchedulerExecutorLost
, rawSchedulerError :: FunPtr RawSchedulerError
}
newtype SchedulerDriver = SchedulerDriver { fromSchedulerDriver :: SchedulerDriverPtr }
deriving (Show, Eq)
type SchedulerDriverPtr = Ptr SchedulerDriver
type RawSchedulerRegistered = SchedulerDriverPtr -> FrameworkIDPtr -> MasterInfoPtr -> IO ()
type RawSchedulerReRegistered = SchedulerDriverPtr -> MasterInfoPtr -> IO ()
type RawSchedulerDisconnected = SchedulerDriverPtr -> IO ()
type RawSchedulerResourceOffers = SchedulerDriverPtr -> Ptr OfferPtr -> CInt -> IO ()
type RawSchedulerOfferRescinded = SchedulerDriverPtr -> OfferIDPtr -> IO ()
type RawSchedulerStatusUpdate = SchedulerDriverPtr -> TaskStatusPtr -> IO ()
type RawSchedulerFrameworkMessage = SchedulerDriverPtr -> ExecutorIDPtr -> SlaveIDPtr -> Ptr CChar -> Int -> IO ()
type RawSchedulerSlaveLost = SchedulerDriverPtr -> SlaveIDPtr -> IO ()
type RawSchedulerExecutorLost = SchedulerDriverPtr -> ExecutorIDPtr -> SlaveIDPtr -> CInt -> IO ()
type RawSchedulerError = SchedulerDriverPtr -> Ptr CChar -> CInt -> IO ()
foreign import ccall "wrapper" wrapSchedulerRegistered
:: RawSchedulerRegistered
-> IO (FunPtr RawSchedulerRegistered)
foreign import ccall "wrapper" wrapSchedulerReRegistered
:: RawSchedulerReRegistered
-> IO (FunPtr RawSchedulerReRegistered)
foreign import ccall "wrapper" wrapSchedulerDisconnected
:: RawSchedulerDisconnected
-> IO (FunPtr RawSchedulerDisconnected)
foreign import ccall "wrapper" wrapSchedulerResourceOffers
:: RawSchedulerResourceOffers
-> IO (FunPtr RawSchedulerResourceOffers)
foreign import ccall "wrapper" wrapSchedulerOfferRescinded
:: RawSchedulerOfferRescinded
-> IO (FunPtr RawSchedulerOfferRescinded)
foreign import ccall "wrapper" wrapSchedulerStatusUpdate
:: RawSchedulerStatusUpdate
-> IO (FunPtr RawSchedulerStatusUpdate)
foreign import ccall "wrapper" wrapSchedulerFrameworkMessage
:: RawSchedulerFrameworkMessage
-> IO (FunPtr RawSchedulerFrameworkMessage)
foreign import ccall "wrapper" wrapSchedulerSlaveLost
:: RawSchedulerSlaveLost
-> IO (FunPtr RawSchedulerSlaveLost)
foreign import ccall "wrapper" wrapSchedulerExecutorLost
:: RawSchedulerExecutorLost
-> IO (FunPtr RawSchedulerExecutorLost)
foreign import ccall "wrapper" wrapSchedulerError
:: RawSchedulerError
-> IO (FunPtr RawSchedulerError)
foreign import ccall safe "ext/scheduler.h createScheduler" c_createScheduler
:: FunPtr RawSchedulerRegistered
-> FunPtr RawSchedulerReRegistered
-> FunPtr RawSchedulerDisconnected
-> FunPtr RawSchedulerResourceOffers
-> FunPtr RawSchedulerOfferRescinded
-> FunPtr RawSchedulerStatusUpdate
-> FunPtr RawSchedulerFrameworkMessage
-> FunPtr RawSchedulerSlaveLost
-> FunPtr RawSchedulerExecutorLost
-> FunPtr RawSchedulerError
-> IO SchedulerPtr
foreign import ccall safe "ext/scheduler.h destroyScheduler" c_destroyScheduler
:: SchedulerPtr
-> IO ()
foreign import ccall safe "ext/scheduler.h createSchedulerDriver" c_createSchedulerDriver
:: SchedulerPtr
-> FrameworkInfoPtr
-> Ptr CChar
-> CInt
-> IO SchedulerDriverPtr
foreign import ccall safe "ext/scheduler.h createSchedulerDriverWithCredentials" c_createSchedulerDriverWithCredentials
:: SchedulerPtr
-> FrameworkInfoPtr
-> Ptr CChar
-> CInt
-> CredentialPtr
-> IO SchedulerDriverPtr
foreign import ccall safe "ext/scheduler.h destroySchedulerDriver" c_destroySchedulerDriver
:: SchedulerDriverPtr
-> IO ()
foreign import ccall safe "ext/scheduler.h startSchedulerDriver" c_startSchedulerDriver
:: SchedulerDriverPtr
-> IO CInt
foreign import ccall safe "ext/scheduler.h stopSchedulerDriver" c_stopSchedulerDriver
:: SchedulerDriverPtr
-> CInt
-> IO CInt
foreign import ccall safe "ext/scheduler.h abortSchedulerDriver" c_abortSchedulerDriver
:: SchedulerDriverPtr
-> IO CInt
foreign import ccall safe "ext/scheduler.h joinSchedulerDriver" c_joinSchedulerDriver
:: SchedulerDriverPtr
-> IO CInt
foreign import ccall safe "ext/scheduler.h runSchedulerDriver" c_runSchedulerDriver
:: SchedulerDriverPtr
-> IO CInt
foreign import ccall safe "ext/scheduler.h requestResources" c_requestResources
:: SchedulerDriverPtr
-> Ptr RequestPtr
-> CInt
-> IO CInt
foreign import ccall safe "ext/scheduler.h launchTasks" c_launchTasks
:: SchedulerDriverPtr
-> Ptr OfferIDPtr
-> CInt
-> Ptr TaskInfoPtr
-> CInt
-> FiltersPtr
-> IO CInt
foreign import ccall safe "ext/scheduler.h killTask" c_killTask
:: SchedulerDriverPtr
-> TaskIDPtr
-> IO CInt
foreign import ccall safe "ext/scheduler.h declineOffer" c_declineOffer
:: SchedulerDriverPtr
-> OfferIDPtr
-> FiltersPtr
-> IO CInt
foreign import ccall safe "ext/scheduler.h reviveOffers" c_reviveOffers
:: SchedulerDriverPtr
-> IO CInt
foreign import ccall safe "ext/scheduler.h schedulerDriverSendFrameworkMessage" c_sendFrameworkMessage
:: SchedulerDriverPtr
-> ExecutorIDPtr
-> SlaveIDPtr
-> Ptr CChar
-> CInt
-> IO CInt
foreign import ccall safe "ext/scheduler.h reconcileTasks" c_reconcileTasks
:: SchedulerDriverPtr
-> Ptr TaskStatusPtr
-> CInt
-> IO CInt