aivika-4.3.5: A multi-method simulation library

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

Simulation.Aivika.QueueStrategy

Description

Tested with: GHC 7.10.1

This module defines the queue strategies.

Synopsis

Documentation

class QueueStrategy s where Source

Defines the basic queue strategy.

Associated Types

data StrategyQueue s :: * -> * Source

A queue used by the strategy.

Methods

newStrategyQueue Source

Arguments

:: s

the strategy

-> Simulation (StrategyQueue s i)

a new queue

Create a new queue by the specified strategy.

strategyQueueNull Source

Arguments

:: StrategyQueue s i

the queue

-> Event Bool

the result of the test

Test whether the queue is empty.

Instances

QueueStrategy StaticPriorities Source

An implementation of the StaticPriorities queue strategy.

QueueStrategy SIRO Source

An implementation of the SIRO queue strategy.

QueueStrategy LCFS Source

An implementation of the LCFS queue strategy.

QueueStrategy FCFS Source

An implementation of the FCFS queue strategy.

class QueueStrategy s => DequeueStrategy s where Source

Defines a strategy with support of the dequeuing operation.

Methods

strategyDequeue Source

Arguments

:: StrategyQueue s i

the queue

-> Event i

the dequeued element

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.

Methods

strategyEnqueue Source

Arguments

:: StrategyQueue s i

the queue

-> i

the element to be enqueued

-> Event ()

the action of enqueuing

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.

Methods

strategyEnqueueWithPriority Source

Arguments

:: StrategyQueue s i

the queue

-> p

the priority

-> i

the element to be enqueued

-> Event ()

the action of enqueuing

Enqueue an element with the specified priority.

Instances

PriorityQueueStrategy StaticPriorities Double Source

An implementation of the StaticPriorities queue strategy.

class DequeueStrategy s => DeletingQueueStrategy s where Source

Defines a strategy with support of the deleting operation.

Methods

strategyQueueDelete Source

Arguments

:: Eq i 
=> StrategyQueue s i

the queue

-> i

the element

-> Event Bool

whether the element was found and removed

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

strategyQueueDeleteBy Source

Arguments

:: StrategyQueue s i

the queue

-> (i -> Bool)

the predicate

-> Event (Maybe i)

the element if it was found and removed

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

strategyQueueContains Source

Arguments

:: Eq i 
=> StrategyQueue s i

the queue

-> i

the element to find

-> Event Bool

whether the element is contained in the queue

Detect whether the specified element is contained in the queue.

strategyQueueContainsBy Source

Arguments

:: StrategyQueue s i

the queue

-> (i -> Bool)

the predicate

-> Event (Maybe i)

the element if it was found

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 
Ord FCFS Source 
Show FCFS Source 
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 = FCFSQueue (DoubleLinkedList i) Source 

data LCFS Source

Strategy: Last Come - First Served (LCFS)

Constructors

LCFS 

Instances

Eq LCFS Source 
Ord LCFS Source 
Show LCFS Source 
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 = LCFSQueue (DoubleLinkedList i) Source 

data SIRO Source

Strategy: Service in Random Order (SIRO).

Constructors

SIRO 

Instances

Eq SIRO Source 
Ord SIRO Source 
Show SIRO Source 
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 = SIROQueue (Vector i) Source