Copyright | Will Thompson and Iñaki García Etxebarria |
---|---|
License | LGPL-2.1 |
Maintainer | Iñaki García Etxebarria |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
GI.GLib.Structs.AsyncQueue
Description
An opaque data structure which represents an asynchronous queue.
It should only be accessed through the g_async_queue_*
functions.
Synopsis
- newtype AsyncQueue = AsyncQueue (ManagedPtr AsyncQueue)
- asyncQueueLength :: (HasCallStack, MonadIO m) => AsyncQueue -> m Int32
- asyncQueueLengthUnlocked :: (HasCallStack, MonadIO m) => AsyncQueue -> m Int32
- asyncQueueLock :: (HasCallStack, MonadIO m) => AsyncQueue -> m ()
- asyncQueuePop :: (HasCallStack, MonadIO m) => AsyncQueue -> m (Ptr ())
- asyncQueuePopUnlocked :: (HasCallStack, MonadIO m) => AsyncQueue -> m (Ptr ())
- asyncQueuePush :: (HasCallStack, MonadIO m) => AsyncQueue -> Ptr () -> m ()
- asyncQueuePushFront :: (HasCallStack, MonadIO m) => AsyncQueue -> Ptr () -> m ()
- asyncQueuePushFrontUnlocked :: (HasCallStack, MonadIO m) => AsyncQueue -> Ptr () -> m ()
- asyncQueuePushSorted :: (HasCallStack, MonadIO m) => AsyncQueue -> Ptr () -> CompareDataFunc -> m ()
- asyncQueuePushSortedUnlocked :: (HasCallStack, MonadIO m) => AsyncQueue -> Ptr () -> CompareDataFunc -> m ()
- asyncQueuePushUnlocked :: (HasCallStack, MonadIO m) => AsyncQueue -> Ptr () -> m ()
- asyncQueueRefUnlocked :: (HasCallStack, MonadIO m) => AsyncQueue -> m ()
- asyncQueueRemove :: (HasCallStack, MonadIO m) => AsyncQueue -> Ptr () -> m Bool
- asyncQueueRemoveUnlocked :: (HasCallStack, MonadIO m) => AsyncQueue -> Ptr () -> m Bool
- asyncQueueSort :: (HasCallStack, MonadIO m) => AsyncQueue -> CompareDataFunc -> m ()
- asyncQueueSortUnlocked :: (HasCallStack, MonadIO m) => AsyncQueue -> CompareDataFunc -> m ()
- asyncQueueTimedPop :: (HasCallStack, MonadIO m) => AsyncQueue -> TimeVal -> m (Ptr ())
- asyncQueueTimedPopUnlocked :: (HasCallStack, MonadIO m) => AsyncQueue -> TimeVal -> m (Ptr ())
- asyncQueueTimeoutPop :: (HasCallStack, MonadIO m) => AsyncQueue -> Word64 -> m (Ptr ())
- asyncQueueTimeoutPopUnlocked :: (HasCallStack, MonadIO m) => AsyncQueue -> Word64 -> m (Ptr ())
- asyncQueueTryPop :: (HasCallStack, MonadIO m) => AsyncQueue -> m (Ptr ())
- asyncQueueTryPopUnlocked :: (HasCallStack, MonadIO m) => AsyncQueue -> m (Ptr ())
- asyncQueueUnlock :: (HasCallStack, MonadIO m) => AsyncQueue -> m ()
- asyncQueueUnrefAndUnlock :: (HasCallStack, MonadIO m) => AsyncQueue -> m ()
Exported types
newtype AsyncQueue Source #
Memory-managed wrapper type.
Constructors
AsyncQueue (ManagedPtr AsyncQueue) |
Instances
Eq AsyncQueue Source # | |
Defined in GI.GLib.Structs.AsyncQueue | |
BoxedPtr AsyncQueue Source # | |
Defined in GI.GLib.Structs.AsyncQueue | |
ManagedPtrNewtype AsyncQueue Source # | |
Defined in GI.GLib.Structs.AsyncQueue Methods toManagedPtr :: AsyncQueue -> ManagedPtr AsyncQueue |
Methods
Click to display all available methods, including inherited ones
Methods
length, lengthUnlocked, lock, pop, popUnlocked, push, pushFront, pushFrontUnlocked, pushSorted, pushSortedUnlocked, pushUnlocked, refUnlocked, remove, removeUnlocked, sort, sortUnlocked, timedPop, timedPopUnlocked, timeoutPop, timeoutPopUnlocked, tryPop, tryPopUnlocked, unlock, unrefAndUnlock.
Getters
None.
Setters
None.
length
Arguments
:: (HasCallStack, MonadIO m) | |
=> AsyncQueue |
|
-> m Int32 | Returns: the length of the |
Returns the length of the queue.
Actually this function returns the number of data items in
the queue minus the number of waiting threads, so a negative
value means waiting threads, and a positive value means available
entries in the queue
. A return value of 0 could mean n entries
in the queue and n threads waiting. This can happen due to locking
of the queue or due to scheduling.
lengthUnlocked
asyncQueueLengthUnlocked Source #
Arguments
:: (HasCallStack, MonadIO m) | |
=> AsyncQueue |
|
-> m Int32 | Returns: the length of the |
Returns the length of the queue.
Actually this function returns the number of data items in
the queue minus the number of waiting threads, so a negative
value means waiting threads, and a positive value means available
entries in the queue
. A return value of 0 could mean n entries
in the queue and n threads waiting. This can happen due to locking
of the queue or due to scheduling.
This function must be called while holding the queue
's lock.
lock
Arguments
:: (HasCallStack, MonadIO m) | |
=> AsyncQueue |
|
-> m () |
Acquires the queue
's lock. If another thread is already
holding the lock, this call will block until the lock
becomes available.
Call asyncQueueUnlock
to drop the lock again.
While holding the lock, you can only call the
g_async_queue_*_unlocked()
functions on queue
. Otherwise,
deadlock may occur.
pop
Arguments
:: (HasCallStack, MonadIO m) | |
=> AsyncQueue |
|
-> m (Ptr ()) | Returns: data from the queue |
Pops data from the queue
. If queue
is empty, this function
blocks until data becomes available.
popUnlocked
asyncQueuePopUnlocked Source #
Arguments
:: (HasCallStack, MonadIO m) | |
=> AsyncQueue |
|
-> m (Ptr ()) | Returns: data from the queue. |
Pops data from the queue
. If queue
is empty, this function
blocks until data becomes available.
This function must be called while holding the queue
's lock.
push
Arguments
:: (HasCallStack, MonadIO m) | |
=> AsyncQueue |
|
-> Ptr () |
|
-> m () |
Pushes the data
into the queue
.
The data
parameter must not be Nothing
.
pushFront
Arguments
:: (HasCallStack, MonadIO m) | |
=> AsyncQueue |
|
-> Ptr () |
|
-> m () |
Pushes the item
into the queue
. item
must not be Nothing
.
In contrast to asyncQueuePush
, this function
pushes the new item ahead of the items already in the queue,
so that it will be the next one to be popped off the queue.
Since: 2.46
pushFrontUnlocked
asyncQueuePushFrontUnlocked Source #
Arguments
:: (HasCallStack, MonadIO m) | |
=> AsyncQueue |
|
-> Ptr () |
|
-> m () |
Pushes the item
into the queue
. item
must not be Nothing
.
In contrast to asyncQueuePushUnlocked
, this function
pushes the new item ahead of the items already in the queue,
so that it will be the next one to be popped off the queue.
This function must be called while holding the queue
's lock.
Since: 2.46
pushSorted
Arguments
:: (HasCallStack, MonadIO m) | |
=> AsyncQueue |
|
-> Ptr () |
|
-> CompareDataFunc |
|
-> m () |
Inserts data
into queue
using func
to determine the new
position.
This function requires that the queue
is sorted before pushing on
new elements, see asyncQueueSort
.
This function will lock queue
before it sorts the queue and unlock
it when it is finished.
For an example of func
see asyncQueueSort
.
Since: 2.10
pushSortedUnlocked
asyncQueuePushSortedUnlocked Source #
Arguments
:: (HasCallStack, MonadIO m) | |
=> AsyncQueue |
|
-> Ptr () |
|
-> CompareDataFunc |
|
-> m () |
Inserts data
into queue
using func
to determine the new
position.
The sort function func
is passed two elements of the queue
.
It should return 0 if they are equal, a negative value if the
first element should be higher in the queue
or a positive value
if the first element should be lower in the queue
than the second
element.
This function requires that the queue
is sorted before pushing on
new elements, see asyncQueueSort
.
This function must be called while holding the queue
's lock.
For an example of func
see asyncQueueSort
.
Since: 2.10
pushUnlocked
asyncQueuePushUnlocked Source #
Arguments
:: (HasCallStack, MonadIO m) | |
=> AsyncQueue |
|
-> Ptr () |
|
-> m () |
Pushes the data
into the queue
.
The data
parameter must not be Nothing
.
This function must be called while holding the queue
's lock.
refUnlocked
asyncQueueRefUnlocked Source #
Arguments
:: (HasCallStack, MonadIO m) | |
=> AsyncQueue |
|
-> m () |
Deprecated: (Since version 2.8)Reference counting is done atomically.so g_async_queue_ref()
can be used regardless of the queue
'slock.
Increases the reference count of the asynchronous queue
by 1.
remove
Arguments
:: (HasCallStack, MonadIO m) | |
=> AsyncQueue |
|
-> Ptr () |
|
-> m Bool | Returns: |
Remove an item from the queue.
Since: 2.46
removeUnlocked
asyncQueueRemoveUnlocked Source #
Arguments
:: (HasCallStack, MonadIO m) | |
=> AsyncQueue |
|
-> Ptr () |
|
-> m Bool | Returns: |
Remove an item from the queue.
This function must be called while holding the queue
's lock.
Since: 2.46
sort
Arguments
:: (HasCallStack, MonadIO m) | |
=> AsyncQueue |
|
-> CompareDataFunc |
|
-> m () |
Sorts queue
using func
.
The sort function func
is passed two elements of the queue
.
It should return 0 if they are equal, a negative value if the
first element should be higher in the queue
or a positive value
if the first element should be lower in the queue
than the second
element.
This function will lock queue
before it sorts the queue and unlock
it when it is finished.
If you were sorting a list of priority numbers to make sure the lowest priority would be at the top of the queue, you could use:
C code
gint32 id1; gint32 id2; id1 = GPOINTER_TO_INT (element1); id2 = GPOINTER_TO_INT (element2); return (id1 > id2 ? +1 : id1 == id2 ? 0 : -1);
Since: 2.10
sortUnlocked
asyncQueueSortUnlocked Source #
Arguments
:: (HasCallStack, MonadIO m) | |
=> AsyncQueue |
|
-> CompareDataFunc |
|
-> m () |
Sorts queue
using func
.
The sort function func
is passed two elements of the queue
.
It should return 0 if they are equal, a negative value if the
first element should be higher in the queue
or a positive value
if the first element should be lower in the queue
than the second
element.
This function must be called while holding the queue
's lock.
Since: 2.10
timedPop
Arguments
:: (HasCallStack, MonadIO m) | |
=> AsyncQueue |
|
-> TimeVal |
|
-> m (Ptr ()) | Returns: data from the queue or |
Deprecated: use asyncQueueTimeoutPop
.
Pops data from the queue
. If the queue is empty, blocks until
endTime
or until data becomes available.
If no data is received before endTime
, Nothing
is returned.
To easily calculate endTime
, a combination of getRealTime
and timeValAdd
can be used.
timedPopUnlocked
asyncQueueTimedPopUnlocked Source #
Arguments
:: (HasCallStack, MonadIO m) | |
=> AsyncQueue |
|
-> TimeVal |
|
-> m (Ptr ()) | Returns: data from the queue or |
Deprecated: use asyncQueueTimeoutPopUnlocked
.
Pops data from the queue
. If the queue is empty, blocks until
endTime
or until data becomes available.
If no data is received before endTime
, Nothing
is returned.
To easily calculate endTime
, a combination of getRealTime
and timeValAdd
can be used.
This function must be called while holding the queue
's lock.
timeoutPop
Arguments
:: (HasCallStack, MonadIO m) | |
=> AsyncQueue |
|
-> Word64 |
|
-> m (Ptr ()) | Returns: data from the queue or |
Pops data from the queue
. If the queue is empty, blocks for
timeout
microseconds, or until data becomes available.
If no data is received before the timeout, Nothing
is returned.
timeoutPopUnlocked
asyncQueueTimeoutPopUnlocked Source #
Arguments
:: (HasCallStack, MonadIO m) | |
=> AsyncQueue |
|
-> Word64 |
|
-> m (Ptr ()) | Returns: data from the queue or |
Pops data from the queue
. If the queue is empty, blocks for
timeout
microseconds, or until data becomes available.
If no data is received before the timeout, Nothing
is returned.
This function must be called while holding the queue
's lock.
tryPop
Arguments
:: (HasCallStack, MonadIO m) | |
=> AsyncQueue |
|
-> m (Ptr ()) | Returns: data from the queue or |
Tries to pop data from the queue
. If no data is available,
Nothing
is returned.
tryPopUnlocked
asyncQueueTryPopUnlocked Source #
Arguments
:: (HasCallStack, MonadIO m) | |
=> AsyncQueue |
|
-> m (Ptr ()) | Returns: data from the queue or |
Tries to pop data from the queue
. If no data is available,
Nothing
is returned.
This function must be called while holding the queue
's lock.
unlock
Arguments
:: (HasCallStack, MonadIO m) | |
=> AsyncQueue |
|
-> m () |
Releases the queue's lock.
Calling this function when you have not acquired
the with asyncQueueLock
leads to undefined
behaviour.
unrefAndUnlock
asyncQueueUnrefAndUnlock Source #
Arguments
:: (HasCallStack, MonadIO m) | |
=> AsyncQueue |
|
-> m () |
Deprecated: (Since version 2.8)Reference counting is done atomically.so asyncQueueUnref
can be used regardless of the queue
'slock.
Decreases the reference count of the asynchronous queue
by 1
and releases the lock. This function must be called while holding
the queue
's lock. If the reference count went to 0, the queue
will be destroyed and the memory allocated will be freed.