aivika-4.5: A multi-method simulation library

CopyrightCopyright (c) 2009-2016, David Sorokin <david.sorokin@gmail.com>
LicenseBSD3
MaintainerDavid Sorokin <david.sorokin@gmail.com>
Stabilityexperimental
Safe HaskellNone
LanguageHaskell2010

Simulation.Aivika.QueueStrategy

Description

Tested with: GHC 8.0.1

This module defines the queue strategies.

Synopsis

Documentation

class QueueStrategy s where Source #

Defines the basic queue strategy.

Minimal complete definition

newStrategyQueue, strategyQueueNull

Associated Types

data StrategyQueue s :: * -> * Source #

A queue used by the strategy.

Methods

newStrategyQueue :: s -> Simulation (StrategyQueue s i) Source #

Create a new queue by the specified strategy.

strategyQueueNull :: StrategyQueue s i -> Event Bool Source #

Test whether the queue is empty.

class QueueStrategy s => DequeueStrategy s where Source #

Defines a strategy with support of the dequeuing operation.

Minimal complete definition

strategyDequeue

Methods

strategyDequeue :: StrategyQueue s i -> Event i Source #

Dequeue the front element and return it.

Instances

DequeueStrategy StaticPriorities Source #

An implementation of the StaticPriorities queue strategy.

DequeueStrategy SIRO Source #

An implementation of the SIRO queue strategy.

DequeueStrategy LCFS Source #

An implementation of the LCFS queue strategy.

DequeueStrategy FCFS Source #

An implementation of the FCFS queue strategy.

class DequeueStrategy s => EnqueueStrategy s where Source #

It defines a strategy when we can enqueue a single element.

Minimal complete definition

strategyEnqueue

Methods

strategyEnqueue :: StrategyQueue s i -> i -> Event () Source #

Enqueue an element.

Instances

EnqueueStrategy SIRO Source #

An implementation of the SIRO queue strategy.

EnqueueStrategy LCFS Source #

An implementation of the LCFS queue strategy.

EnqueueStrategy FCFS Source #

An implementation of the FCFS queue strategy.

class DequeueStrategy s => PriorityQueueStrategy s p | s -> p where Source #

It defines a strategy when we can enqueue an element with the specified priority.

Minimal complete definition

strategyEnqueueWithPriority

Methods

strategyEnqueueWithPriority :: StrategyQueue s i -> p -> i -> Event () Source #

Enqueue an element with the specified priority.

class DequeueStrategy s => DeletingQueueStrategy s where Source #

Defines a strategy with support of the deleting operation.

Methods

strategyQueueDelete :: Eq i => StrategyQueue s i -> i -> Event Bool Source #

Remove the element and return a flag indicating whether the element was found and removed.

strategyQueueDeleteBy :: StrategyQueue s i -> (i -> Bool) -> Event (Maybe i) Source #

Remove an element satisfying the predicate and return the element if found.

strategyQueueContains :: Eq i => StrategyQueue s i -> i -> Event Bool Source #

Detect whether the specified element is contained in the queue.

strategyQueueContainsBy :: StrategyQueue s i -> (i -> Bool) -> Event (Maybe i) Source #

Detect whether an element satifying the specified predicate is contained in the queue.

Instances

DeletingQueueStrategy StaticPriorities Source #

An implementation of the StaticPriorities queue strategy.

DeletingQueueStrategy SIRO Source #

An implementation of the SIRO queue strategy.

DeletingQueueStrategy LCFS Source #

An implementation of the LCFS queue strategy.

DeletingQueueStrategy FCFS Source #

An implementation of the FCFS queue strategy.

data FCFS Source #

Strategy: First Come - First Served (FCFS).

Constructors

FCFS 

Instances

Eq FCFS Source # 

Methods

(==) :: FCFS -> FCFS -> Bool #

(/=) :: FCFS -> FCFS -> Bool #

Ord FCFS Source # 

Methods

compare :: FCFS -> FCFS -> Ordering #

(<) :: FCFS -> FCFS -> Bool #

(<=) :: FCFS -> FCFS -> Bool #

(>) :: FCFS -> FCFS -> Bool #

(>=) :: FCFS -> FCFS -> Bool #

max :: FCFS -> FCFS -> FCFS #

min :: FCFS -> FCFS -> FCFS #

Show FCFS Source # 

Methods

showsPrec :: Int -> FCFS -> ShowS #

show :: FCFS -> String #

showList :: [FCFS] -> ShowS #

DeletingQueueStrategy FCFS Source #

An implementation of the FCFS queue strategy.

EnqueueStrategy FCFS Source #

An implementation of the FCFS queue strategy.

DequeueStrategy FCFS Source #

An implementation of the FCFS queue strategy.

QueueStrategy FCFS Source #

An implementation of the FCFS queue strategy.

ResultItemable (ResultValue FCFS) Source # 
data StrategyQueue FCFS Source # 

data LCFS Source #

Strategy: Last Come - First Served (LCFS)

Constructors

LCFS 

Instances

Eq LCFS Source # 

Methods

(==) :: LCFS -> LCFS -> Bool #

(/=) :: LCFS -> LCFS -> Bool #

Ord LCFS Source # 

Methods

compare :: LCFS -> LCFS -> Ordering #

(<) :: LCFS -> LCFS -> Bool #

(<=) :: LCFS -> LCFS -> Bool #

(>) :: LCFS -> LCFS -> Bool #

(>=) :: LCFS -> LCFS -> Bool #

max :: LCFS -> LCFS -> LCFS #

min :: LCFS -> LCFS -> LCFS #

Show LCFS Source # 

Methods

showsPrec :: Int -> LCFS -> ShowS #

show :: LCFS -> String #

showList :: [LCFS] -> ShowS #

DeletingQueueStrategy LCFS Source #

An implementation of the LCFS queue strategy.

EnqueueStrategy LCFS Source #

An implementation of the LCFS queue strategy.

DequeueStrategy LCFS Source #

An implementation of the LCFS queue strategy.

QueueStrategy LCFS Source #

An implementation of the LCFS queue strategy.

ResultItemable (ResultValue LCFS) Source # 
data StrategyQueue LCFS Source # 

data SIRO Source #

Strategy: Service in Random Order (SIRO).

Constructors

SIRO 

Instances

Eq SIRO Source # 

Methods

(==) :: SIRO -> SIRO -> Bool #

(/=) :: SIRO -> SIRO -> Bool #

Ord SIRO Source # 

Methods

compare :: SIRO -> SIRO -> Ordering #

(<) :: SIRO -> SIRO -> Bool #

(<=) :: SIRO -> SIRO -> Bool #

(>) :: SIRO -> SIRO -> Bool #

(>=) :: SIRO -> SIRO -> Bool #

max :: SIRO -> SIRO -> SIRO #

min :: SIRO -> SIRO -> SIRO #

Show SIRO Source # 

Methods

showsPrec :: Int -> SIRO -> ShowS #

show :: SIRO -> String #

showList :: [SIRO] -> ShowS #

DeletingQueueStrategy SIRO Source #

An implementation of the SIRO queue strategy.

EnqueueStrategy SIRO Source #

An implementation of the SIRO queue strategy.

DequeueStrategy SIRO Source #

An implementation of the SIRO queue strategy.

QueueStrategy SIRO Source #

An implementation of the SIRO queue strategy.

ResultItemable (ResultValue SIRO) Source # 
data StrategyQueue SIRO Source # 

data StaticPriorities Source #

Strategy: Static Priorities. It uses the priority queue.

Constructors

StaticPriorities 

Instances

Eq StaticPriorities Source # 
Ord StaticPriorities Source # 
Show StaticPriorities Source # 
DeletingQueueStrategy StaticPriorities Source #

An implementation of the StaticPriorities queue strategy.

DequeueStrategy StaticPriorities Source #

An implementation of the StaticPriorities queue strategy.

QueueStrategy StaticPriorities Source #

An implementation of the StaticPriorities queue strategy.

PriorityQueueStrategy StaticPriorities Double Source #

An implementation of the StaticPriorities queue strategy.

ResultItemable (ResultValue StaticPriorities) Source # 
data StrategyQueue StaticPriorities Source #