mirror of https://github.com/deavmi/tasky.git
Added ability to use a custom descriptor ID, throws exception if the given
descriptor ID is in use already
This commit is contained in:
parent
89347cb6d2
commit
a7c18d5e10
|
@ -11,7 +11,7 @@ module tasky.jobs;
|
||||||
/* TODO: Remove this import */
|
/* TODO: Remove this import */
|
||||||
import std.stdio;
|
import std.stdio;
|
||||||
|
|
||||||
import tasky.exceptions : TaskyException;
|
import tasky.exceptions : TaskyException, DescriptorException;
|
||||||
/* TODO: DList stuff */
|
/* TODO: DList stuff */
|
||||||
import std.container.dlist;
|
import std.container.dlist;
|
||||||
import core.sync.mutex : Mutex;
|
import core.sync.mutex : Mutex;
|
||||||
|
@ -20,6 +20,8 @@ import std.string : cmp;
|
||||||
import eventy.signal : Signal;
|
import eventy.signal : Signal;
|
||||||
import eventy.event : Event;
|
import eventy.event : Event;
|
||||||
|
|
||||||
|
import std.conv : to;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A Job to be scheduled
|
* A Job to be scheduled
|
||||||
*/
|
*/
|
||||||
|
@ -261,8 +263,6 @@ public abstract class Descriptor : Signal
|
||||||
/**
|
/**
|
||||||
* Given a descriptor class this will attempt adding it,
|
* Given a descriptor class this will attempt adding it,
|
||||||
* on failure false is returned, on sucess, true
|
* on failure false is returned, on sucess, true
|
||||||
*
|
|
||||||
* NOTE: New feature, not yet in use
|
|
||||||
*/
|
*/
|
||||||
private bool addClass(ulong descriptorClass)
|
private bool addClass(ulong descriptorClass)
|
||||||
{
|
{
|
||||||
|
@ -298,16 +298,18 @@ public abstract class Descriptor : Signal
|
||||||
*/
|
*/
|
||||||
this(ulong descriptorClass)
|
this(ulong descriptorClass)
|
||||||
{
|
{
|
||||||
/* Check if the given descriptor class is available */
|
/* Attempt adding */
|
||||||
if(isDescIDInUse(descriptorClass))
|
if(addClass(descriptorClass))
|
||||||
{
|
{
|
||||||
/* TODO: This is a bad idea, we need to lock and one shot this */
|
/* Set the descriptor ID */
|
||||||
|
this.descriptorClass = descriptorClass;
|
||||||
}
|
}
|
||||||
/* TODO: Add to queue */
|
else
|
||||||
|
{
|
||||||
/* Set the descriptor ID */
|
/* Throw an exception if the ID is already in use */
|
||||||
this.descriptorClass = descriptorClass;
|
throw new DescriptorException("Given ID '"~to!(string)(descriptorClass)~"' is already in use");
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Setup a new Eventy Signal handler
|
* Setup a new Eventy Signal handler
|
||||||
* which handles only the typeID
|
* which handles only the typeID
|
||||||
|
|
Loading…
Reference in New Issue