| 657 | |
| 658 | |
| 659 | void EventManager::delete_process(SLONG process_offset) |
| 660 | { |
| 661 | /************************************** |
| 662 | * |
| 663 | * d e l e t e _ p r o c e s s |
| 664 | * |
| 665 | ************************************** |
| 666 | * |
| 667 | * Functional description |
| 668 | * Delete a process block including friends and relations. |
| 669 | * |
| 670 | **************************************/ |
| 671 | prb* const process = (prb*) SRQ_ABS_PTR(process_offset); |
| 672 | |
| 673 | // Delete any open sessions |
| 674 | |
| 675 | while (!SRQ_EMPTY(process->prb_sessions)) |
| 676 | { |
| 677 | ses* const session = (ses*) ((UCHAR*) SRQ_NEXT(process->prb_sessions) - offsetof(ses, ses_sessions)); |
| 678 | delete_session(SRQ_REL_PTR(session)); |
| 679 | } |
| 680 | |
| 681 | m_sharedMemory->eventFini(&process->prb_event); |
| 682 | |
| 683 | // Untangle and release process block |
| 684 | |
| 685 | remove_que(&process->prb_processes); |
| 686 | free_global((frb*) process); |
| 687 | } |
| 688 | |
| 689 | |
| 690 | void EventManager::delete_request(evt_req* request) |