Fixes for resetting a stream.
This commit is contained in:
parent
4a9c137aef
commit
1430b33413
4 changed files with 17 additions and 3 deletions
|
@ -213,6 +213,11 @@ namespace Buffer {
|
|||
while (true){
|
||||
thisStream->getWriteLock();
|
||||
if (thisStream->getStream()->parsePacket(thisStream->getIPInput().Received())){
|
||||
if (thisStream->getStream()->metadata.isMember("reset")){
|
||||
thisStream->disconnectUsers();
|
||||
thisStream->getStream()->metadata.removeMember("reset");
|
||||
thisStream->getStream()->metadata.netPrepare();
|
||||
}
|
||||
thisStream->dropWriteLock(true);
|
||||
}else{
|
||||
thisStream->dropWriteLock(false);
|
||||
|
|
|
@ -227,12 +227,20 @@ namespace Buffer {
|
|||
users.insert(newUser);
|
||||
}
|
||||
|
||||
///\brief Add a user to the userlist.
|
||||
///\param newUser The user to be added.
|
||||
///\brief Removes a user to the userlist.
|
||||
///\param newUser The user to be removed.
|
||||
void Stream::removeUser(user * oldUser){
|
||||
tthread::lock_guard<tthread::mutex> guard(stats_mutex);
|
||||
users.erase(oldUser);
|
||||
}
|
||||
|
||||
///\brief Disconnects all users.
|
||||
void Stream::disconnectUsers(){
|
||||
tthread::lock_guard<tthread::mutex> guard(stats_mutex);
|
||||
for (usersIt = users.begin(); usersIt != users.end(); usersIt++){
|
||||
(*usersIt)->Disconnect("Stream reset");
|
||||
}
|
||||
}
|
||||
|
||||
///\brief Blocks the thread until new data is available.
|
||||
void Stream::waitForData(){
|
||||
|
|
|
@ -51,6 +51,8 @@ namespace Buffer {
|
|||
void addUser(user * newUser);
|
||||
/// Delete a user from the userlist.
|
||||
void removeUser(user * oldUser);
|
||||
/// Disconnects all users.
|
||||
void disconnectUsers();
|
||||
/// Blocks the thread until new data is available.
|
||||
void waitForData();
|
||||
/// Cleanup function
|
||||
|
|
|
@ -29,7 +29,6 @@ namespace Buffer {
|
|||
|
||||
///\brief Drops held DTSC::Ring class, if one is held.
|
||||
user::~user(){
|
||||
Stream::get()->dropRing(myRing);
|
||||
} //destructor
|
||||
|
||||
///\brief Disconnects the current user. Doesn't do anything if already disconnected.
|
||||
|
|
Loading…
Add table
Reference in a new issue