Will be redoing the event interface for subscriptions, some work for the wi and crash fixes

This commit is contained in:
KimLS
2017-01-30 23:22:52 -08:00
parent a8699eb40c
commit d5bd773a46
17 changed files with 205 additions and 98 deletions
+33 -56
View File
@@ -52,112 +52,89 @@ LoginServerList::~LoginServerList() {
void LoginServerList::Add(const char* iAddress, uint16 iPort, const char* Account, const char* Password, bool Legacy)
{
auto loginserver = new LoginServer(iAddress, iPort, Account, Password, Legacy);
list.Insert(loginserver);
m_list.push_back(std::unique_ptr<LoginServer>(loginserver));
}
bool LoginServerList::SendInfo() {
LinkedListIterator<LoginServer*> iterator(list);
iterator.Reset();
while(iterator.MoreElements()){
iterator.GetData()->SendInfo();
iterator.Advance();
for (auto &iter : m_list) {
(*iter).SendInfo();
}
return true;
}
bool LoginServerList::SendNewInfo() {
LinkedListIterator<LoginServer*> iterator(list);
iterator.Reset();
while(iterator.MoreElements()){
iterator.GetData()->SendNewInfo();
iterator.Advance();
for (auto &iter : m_list) {
(*iter).SendNewInfo();
}
return true;
}
bool LoginServerList::SendStatus() {
LinkedListIterator<LoginServer*> iterator(list);
iterator.Reset();
while(iterator.MoreElements()){
iterator.GetData()->SendStatus();
iterator.Advance();
for (auto &iter : m_list) {
(*iter).SendStatus();
}
return true;
}
bool LoginServerList::SendPacket(ServerPacket* pack) {
LinkedListIterator<LoginServer*> iterator(list);
iterator.Reset();
while(iterator.MoreElements()){
iterator.GetData()->SendPacket(pack);
iterator.Advance();
for (auto &iter : m_list) {
(*iter).SendPacket(pack);
}
return true;
}
bool LoginServerList::SendAccountUpdate(ServerPacket* pack) {
LinkedListIterator<LoginServer*> iterator(list);
Log.Out(Logs::Detail, Logs::World_Server, "Requested to send ServerOP_LSAccountUpdate packet to all loginservers");
iterator.Reset();
while(iterator.MoreElements()){
if(iterator.GetData()->CanUpdate()) {
iterator.GetData()->SendAccountUpdate(pack);
for (auto &iter : m_list) {
if ((*iter).CanUpdate()) {
(*iter).SendAccountUpdate(pack);
}
iterator.Advance();
}
return true;
}
bool LoginServerList::Connected() {
LinkedListIterator<LoginServer*> iterator(list);
iterator.Reset();
while(iterator.MoreElements()){
if(iterator.GetData()->Connected())
for (auto &iter : m_list) {
if ((*iter).Connected()) {
return true;
iterator.Advance();
}
}
return false;
}
bool LoginServerList::AllConnected() {
LinkedListIterator<LoginServer*> iterator(list);
iterator.Reset();
while(iterator.MoreElements()){
if(iterator.GetData()->Connected() == false)
for (auto &iter : m_list) {
if (!(*iter).Connected()) {
return false;
iterator.Advance();
}
}
return true;
}
bool LoginServerList::MiniLogin() {
LinkedListIterator<LoginServer*> iterator(list);
iterator.Reset();
while(iterator.MoreElements()){
if(iterator.GetData()->MiniLogin())
for (auto &iter : m_list) {
if ((*iter).MiniLogin()) {
return true;
iterator.Advance();
}
}
return false;
}
bool LoginServerList::CanUpdate() {
LinkedListIterator<LoginServer*> iterator(list);
iterator.Reset();
while(iterator.MoreElements()){
if(iterator.GetData()->CanUpdate())
for (auto &iter : m_list) {
if ((*iter).CanUpdate()) {
return true;
iterator.Advance();
}
}
return false;
}