| 436 | } |
| 437 | |
| 438 | void LoadBalance(dmMessage::Message *message, void* user_ptr) |
| 439 | { |
| 440 | HttpService* service = (HttpService*) user_ptr; |
| 441 | if (message->m_Descriptor == (uintptr_t) dmHttpDDF::StopHttp::m_DDFDescriptor) { |
| 442 | service->m_Run = false; |
| 443 | } else { |
| 444 | dmMessage::URL r = message->m_Receiver; |
| 445 | r.m_Socket = service->m_Workers[service->m_LoadBalanceCount % service->m_Workers.Size()]->m_Socket; |
| 446 | dmMessage::Post(&message->m_Sender, |
| 447 | &r, |
| 448 | message->m_Id, |
| 449 | message->m_UserData1, |
| 450 | message->m_UserData2, |
| 451 | message->m_Descriptor, |
| 452 | message->m_Data, |
| 453 | message->m_DataSize, 0); |
| 454 | service->m_LoadBalanceCount++; |
| 455 | } |
| 456 | } |
| 457 | |
| 458 | static void Loop(void* arg) |
| 459 | { |