1
0
mirror of https://github.com/deavminet/dnetd synced 2024-09-21 17:53:39 +02:00
dnetd_old/source/dnetd/dchannel.d

66 lines
990 B
D
Raw Normal View History

2020-09-23 18:52:11 +02:00
/**
* DChannel
*
* Represents a channel and its
* associated information such
* as its name, topic, members
*/
module dnetd.dchannel;
import dnetd.dconnection : DConnection;
import core.sync.mutex : Mutex;
2020-09-23 18:52:11 +02:00
public class DChannel
{
/**
* Channel information
*/
private string name;
//private string topic;
/**
* Users in this channel
*/
private DConnection[] members;
private Mutex memberLock;
2020-09-23 18:52:11 +02:00
this(string name)
{
/* Initialize the lock */
memberLock = new Mutex();
2020-09-23 18:52:11 +02:00
}
public string getName()
{
return name;
}
public void join(DConnection client)
{
/* Lock the members list */
memberLock.lock();
/**
* TODO: Error handling if the calling DConnection fails midway
* and doesn't unlock it
*/
/* Add the client */
members ~= client;
/* Unlock the members list */
memberLock.unlock();
}
public void leave(DConnection client)
2020-09-23 18:52:11 +02:00
{
}
public override string toString()
{
return "DChannel [Name: "~name~", Members: "~members~"]";
}
2020-09-23 18:52:11 +02:00
}