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){
|
while (true){
|
||||||
thisStream->getWriteLock();
|
thisStream->getWriteLock();
|
||||||
if (thisStream->getStream()->parsePacket(thisStream->getIPInput().Received())){
|
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);
|
thisStream->dropWriteLock(true);
|
||||||
}else{
|
}else{
|
||||||
thisStream->dropWriteLock(false);
|
thisStream->dropWriteLock(false);
|
||||||
|
|
|
@ -227,12 +227,20 @@ namespace Buffer {
|
||||||
users.insert(newUser);
|
users.insert(newUser);
|
||||||
}
|
}
|
||||||
|
|
||||||
///\brief Add a user to the userlist.
|
///\brief Removes a user to the userlist.
|
||||||
///\param newUser The user to be added.
|
///\param newUser The user to be removed.
|
||||||
void Stream::removeUser(user * oldUser){
|
void Stream::removeUser(user * oldUser){
|
||||||
tthread::lock_guard<tthread::mutex> guard(stats_mutex);
|
tthread::lock_guard<tthread::mutex> guard(stats_mutex);
|
||||||
users.erase(oldUser);
|
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.
|
///\brief Blocks the thread until new data is available.
|
||||||
void Stream::waitForData(){
|
void Stream::waitForData(){
|
||||||
|
|
|
@ -51,6 +51,8 @@ namespace Buffer {
|
||||||
void addUser(user * newUser);
|
void addUser(user * newUser);
|
||||||
/// Delete a user from the userlist.
|
/// Delete a user from the userlist.
|
||||||
void removeUser(user * oldUser);
|
void removeUser(user * oldUser);
|
||||||
|
/// Disconnects all users.
|
||||||
|
void disconnectUsers();
|
||||||
/// Blocks the thread until new data is available.
|
/// Blocks the thread until new data is available.
|
||||||
void waitForData();
|
void waitForData();
|
||||||
/// Cleanup function
|
/// Cleanup function
|
||||||
|
|
|
@ -29,7 +29,6 @@ namespace Buffer {
|
||||||
|
|
||||||
///\brief Drops held DTSC::Ring class, if one is held.
|
///\brief Drops held DTSC::Ring class, if one is held.
|
||||||
user::~user(){
|
user::~user(){
|
||||||
Stream::get()->dropRing(myRing);
|
|
||||||
} //destructor
|
} //destructor
|
||||||
|
|
||||||
///\brief Disconnects the current user. Doesn't do anything if already disconnected.
|
///\brief Disconnects the current user. Doesn't do anything if already disconnected.
|
||||||
|
|
Loading…
Add table
Reference in a new issue