Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • Multiworld Watcher Multiworld Watcher
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
  • Issues 27
    • Issues 27
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • Deployments
    • Deployments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Terraform modules
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • Q4SG
  • Multiworld WatcherMultiworld Watcher
  • Issues
  • #8
Closed
Open
Issue created Feb 16, 2022 by Adam "MrBond" Ziegler@MrBondOwner

Refactor pipeline input/output mapping

Refactor the current "pipeline" setup to allow greater flexibility in configuring inputs and outputs. Design for a fan-out pattern - a single input command or message could be processed, parsed, then sent to multiple outputs.

e.g.:

  • A parsed server log message for an item send for an important item could be sent to general item sends, an "important item" sends channel, and notify the receiver via DM
  • A command entered at the console could return info to a private channel and DM an affected player

Allow any step of the pipeline to modify the output channels; instead of returning a single result from each pipeline step, pass a message object that gets built as it passes through each step (including which channels it should go through), then iterate through and send the final message object to all enabled output adapters.

Refactoring pipelines:

  • Refactor processing to support multiple pipelines
    • Input adapter -> (determine parser type) -> parser(s) matching type -> output adapter(s)
    • Determine parser(s) to engage from initial input; e.g., could treat Discord DM or channel control commands as if they came from console
  • Rename all "Composer"s to "Parser"s, restructure subdirectories under parsers based on the type of data coming in (e.g., log data, bot command, backend command, etc)
  • Rename ConsoleInputAdapter to FileInputAdapter
  • Rename DiscordOutputAdapter to DiscordChannelOutputAdapter (look into docs to see if a DM is enough of a channel where the distinction is worthwhile)
Edited Feb 16, 2022 by Adam "MrBond" Ziegler
Assignee
Assign to
Time tracking