Client-server application design issue
Posted
by
user2547823
on Programmers
See other posts from Programmers
or by user2547823
Published on 2013-09-30T17:47:34Z
Indexed on
2013/11/05
10:11 UTC
Read the original article
Hit count: 218
I have a collection of clients on server's side. And there are some objects that need to work with that collection - adding and removing clients, sending message to them, updating connection settings and so on. They should perform these actions simultaneously, so mutex or another synchronization primitive is required. I want to share one instance of collection between these objects, but all of them require access to private fields of collection. I hope that code sample makes it more clear[C++]:
class Collection
{
std::vector< Client* > clients;
Mutex mLock;
...
}
class ClientNotifier
{
void sendMessage()
{
mLock.lock();
// loop over clients and send message to each of them
}
}
class ConnectionSettingsUpdater
{
void changeSettings( const std::string& name )
{
mLock.lock();
// if client with this name is inside collection, change its settings
}
}
As you can see, all these classes require direct access to Collection's private fields.
Can you give me an advice about how to implement such behaviour correctly, i.e. keeping Collection's interface simple without it knowing about its users?
© Programmers or respective owner