CatgirlIntelligenceAgency/code/process-models/converting-model
2023-06-23 21:35:28 +02:00
..
src/main/java/nu/marginalia/converting Add bits and keywords for generator classes (docs, forum, wiki). 2023-06-23 21:35:28 +02:00
build.gradle Re-introduce monkey patched GSON to make converter run better. 2023-06-19 17:58:19 +02:00
readme.md Remove unrelated code, break tools into their own directory. 2023-03-17 16:03:11 +01:00

Converting Models

Contains models shared by the converting-process and loading-process.

Design

The two processes communicate through a file-based protocol. The converter serializes instructions to file, which are deserialized by the loader and fed into an instructions.

The instructions implement a visitor pattern.

Conceptually the pattern can be thought of a bit like remote function calls over file, or a crude instructions-based programming language.

This

producer.foo("cat");
producer.bar("milk", "eggs", "bread");

translates through this paradigm, to this:

(producer)
writeInstruction(DoFoo("Cat"))
writeInstruction(DoBar("Milk", "Eggs", "Bread"))

(consumer)
while read instruction:
  interpreter.apply(instruction)
  
(Interpreter)
doFoo(animal):
  ...
doBar(ingredients):
  ...

(doFoo)
DoFoo(animal):
  apply(interpreter):
    interpreter.foo(animal)

(doBar)
DoBar(ingredients):
  apply(interpreter):
    interpreter.bar(ingredients)