The Web Processor/Web Memory Bus is implemented by the AR repository (located in Java package lv.lumii.tda.adapters.repository.ar) via memory-mapped files.
The memory-mapped files are located in the project cache folder (a folder, where the zipped webAppOS project is extracted, namely, webappos/cache/projects/[cache-UUID]).
There are 4 memory-mapped files used by AR:
ar.common.shm
ar.actions.shm
ar.strings.shm
ar.chars.shm
AR relies on the Java VM implementation of memory-mapped files. Java VM, in its turn, relies on the underlying operating system.
Each server-side web memory slot initializes an AR instance by opening the repository with the location string:
shmserver:[project-cache-folder]
AR will automatically create all *.shm files, if they do not exist.
When a web processor receives a web call, it can access the repository via the IWebMemory interface:
IWebMemory webmem = API.dataMemory.getWebMemory("[project_id received in a web call seed]");
The returned object is a stub, which connects to the shared memory-mapped files by opening an instance of the AR repository with the location string:
shmclient:[project-cache-folder]