Queue
- Added the `enqueue(Message)` method - Initialize a lock for the queue itself MessageDeliveryTransport - Added new interface MessageManager - Added stub `sendq(Message)` - Added stub `recvq(Message)`
This commit is contained in:
parent
cd6c07d209
commit
386b86950f
|
@ -2,6 +2,7 @@ module renaissance.server.messagemanager;
|
|||
|
||||
import renaissance.server.server : Server;
|
||||
import std.container.slist : SList;
|
||||
import core.sync.mutex : Mutex;
|
||||
|
||||
public struct Message
|
||||
{
|
||||
|
@ -23,13 +24,44 @@ public class Queue
|
|||
{
|
||||
private size_t maxSize;
|
||||
private SList!(Message) queue;
|
||||
private Mutex lock;
|
||||
|
||||
public this(size_t maxSize = QUEUE_DEFAULT_SIZE)
|
||||
{
|
||||
this.lock = new Mutex();
|
||||
}
|
||||
|
||||
public void enqueue(Message message)
|
||||
{
|
||||
// Lock the queue
|
||||
this.lock.lock();
|
||||
|
||||
// On exit
|
||||
scope(exit)
|
||||
{
|
||||
// Unlock the queue
|
||||
this.lock.unlock();
|
||||
}
|
||||
|
||||
// Enqueue
|
||||
this.queue.insertAfter(this.queue[], message);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public interface MessageDeliveryTransport
|
||||
{
|
||||
// On incoming message
|
||||
public bool onIncoming(Message latest, Queue from);
|
||||
|
||||
// On message that must be egressed
|
||||
public bool onOutgoing(Message latest, Queue from);
|
||||
}
|
||||
|
||||
// TODO: Should have a thread that manages
|
||||
// ... message delivery by just calling something
|
||||
// ... in server (it must handle encoding and
|
||||
// ... so forth)
|
||||
public class MessageManager
|
||||
{
|
||||
private Server server;
|
||||
|
@ -43,6 +75,16 @@ public class MessageManager
|
|||
this.sendQueue = new Queue();
|
||||
this.receiveQueue = new Queue();
|
||||
}
|
||||
|
||||
public void sendq(Message message)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void recvq(Message message)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public static MessageManager create(Server server)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue