| 392 | } |
| 393 | |
| 394 | void Dispatch(dmMessage::Message *message, void* user_ptr) |
| 395 | { |
| 396 | Worker* worker = (Worker*) user_ptr; |
| 397 | if (!worker->m_Run) { |
| 398 | return; |
| 399 | } |
| 400 | |
| 401 | if (message->m_Descriptor) |
| 402 | { |
| 403 | dmDDF::Descriptor* descriptor = (dmDDF::Descriptor*)message->m_Descriptor; |
| 404 | |
| 405 | if (message->m_Descriptor == (uintptr_t) dmHttpDDF::HttpRequest::m_DDFDescriptor) |
| 406 | { |
| 407 | dmHttpDDF::HttpRequest* request = (dmHttpDDF::HttpRequest*) &message->m_Data[0]; |
| 408 | HandleRequest(worker, &message->m_Sender, 0, message->m_UserData2, request); |
| 409 | free((void*) request->m_Headers); |
| 410 | free((void*) request->m_Request); |
| 411 | } |
| 412 | else if (message->m_Descriptor == (uintptr_t) dmHttpDDF::StopHttp::m_DDFDescriptor) |
| 413 | { |
| 414 | worker->m_Run = false; |
| 415 | } |
| 416 | else |
| 417 | { |
| 418 | const dmMessage::URL* sender = &message->m_Sender; |
| 419 | const char* socket_name = dmMessage::GetSocketName(sender->m_Socket); |
| 420 | const char* path_name = dmHashReverseSafe64(sender->m_Path); |
| 421 | const char* fragment_name = dmHashReverseSafe64(sender->m_Fragment); |
| 422 | dmLogError("Unknown message '%s' sent to socket '%s' from %s:%s#%s.", |
| 423 | descriptor->m_Name, HTTP_SOCKET_NAME, socket_name, path_name, fragment_name); |
| 424 | } |
| 425 | } |
| 426 | else |
| 427 | { |
| 428 | const dmMessage::URL* sender = &message->m_Sender; |
| 429 | const char* socket_name = dmMessage::GetSocketName(sender->m_Socket); |
| 430 | const char* path_name = dmHashReverseSafe64(sender->m_Path); |
| 431 | const char* fragment_name = dmHashReverseSafe64(sender->m_Fragment); |
| 432 | |
| 433 | dmLogError("Only http messages can be sent to the '%s' socket. Message sent from: %s:%s#%s", |
| 434 | HTTP_SOCKET_NAME, socket_name, path_name, fragment_name); |
| 435 | } |
| 436 | } |
| 437 | |
| 438 | void LoadBalance(dmMessage::Message *message, void* user_ptr) |
| 439 | { |