Der ICM-Prozess benutzt Threads, um die anfallende Last zu parallelisieren.
Die folgende Abbildung gibt eine detailliertere Übersicht des ICM.
Neben dem Pool von Worker-Threads, die die eingehenden Anfragen bearbeiten, sind folgende Komponenten des ICM als weitere Threads implementiert:
Thread Control
Dieser Thread nimmt die eingehenden TCP/IP-Requests entgegen und erzeugt (oder weckt) einen Worker Thread aus dem Threadpool, um den Request zu bearbeiten. Des Weiteren initialisiert die Thread-Steuerung die Verbindungs-Info-Daten.
Worker-Threads
Diese Threads behandeln Anfragen und Antworten einer Verbindung. Ein Worker-Thread enthält einen I/O Handler für die Netzwerkein- und -ausgabe, diverse Plugins für die verschiedenen unterstützten Protokolle (HTTP, SMTP,…), die benötigt werden, um entscheiden zu können, wann das gesendete Paket zu Ende ist (protokollabhängig).
Weitere Informationen: Bearbeitung von HTTP-Requests.
Watchdog
Normalerweise wartet ein Worker-Thread auf die Antwort (egal, ob er Client oder Server ist); im Fall eines Timeouts übernimmt der Watchdog die Aufgabe, auf die Antwort zu warten. Der Worker-Thread kann wieder für andere Anfragen verwendet werden. Erhält der Watchdog dann die Antwort, informiert er die Thread Control Komponente, die dann einen Worker Thread weckt.
Signal Handler
Dieser Thread bearbeitet Signale, die vom Betriebssystem oder einem anderen Prozess (z.B. Dispatcher) gesendet werden.
Verbindungs-Info
Diese Tabelle enthält für jede bestehende Netzwerkverbindung Infos über den Zustand, die Memory Pipes und die Plugin-Daten.
Memory Pipes
Diese speicherbasierten Kommunikationsobjekte dienen zum Datentransfer zwischen ICM und den Workprozessen (AS ABAP) bzw. den Java Server-Prozessen (AS Java). Hierbei gibt es für jede Verbindung 4 Pipes: für Request und Response je eine Datenpipe und eine OOB (Out Of Band)-Pipe. Letztere wird für Steuerinformationen verwendet.
Weitere Informationen: Memory Pipes und MPI-Puffer
Internet Server Cache
Der ICM enthält noch einen Cache, um sich wiederholende Anfragen schnell beantworten zu können. Dieser Cache ist hier im Bild nicht dargestellt, er ist in einem eigenen Abschnitt beschrieben: ICM Server-Cache.