# PierMesh service runner Main method for running the PierMesh service ### *class* run.Node Node: Class that handles most of the PierMesh data [๐Ÿ”— Source](https://git.utopic.work/PierMesh/piermesh/src/branch/main/src/run.py) #### toLog We store logs to be processed here * **Type:** list #### actions Dictionary mapping methods with the action prefix to the method name after action dynamically to be called through Sponge (Sponge.base) filtering * **Type:** dict #### todo List of actions to execute * **Type:** list[dict] #### network Network map * **Type:** Network #### catch Daisy cache for catchs, our domain analog * **Type:** Catch #### cache Daisy cache for general use * **Type:** Cache #### nodeInfo Daisy (Components.daisy.Daisy) record containing some information about the node * **Type:** [Daisy](/PierMesh/piermesh/src/branch/main/docs/Components/daisy.md#Components.daisy.Daisy) #### onodeID PierMesh node ID * **Type:** str #### oTransmitter LoRa transmitter Transmitter * **Type:** [Transmitter](/PierMesh/piermesh/src/branch/main/docs/Transmission/transmission.md#Transmission.transmission.Transmitter) #### processed List of IDs of already completed messages so that we donโ€™t reprocess messages * **Type:** list #### proc This process (psutil.Process), used for managing and monitoring PierMesh * **Type:** psutil.Process #### mTasks Dictionary of PierMesh service tasks * **Type:** dict #### SEE ALSO `logPassLoop` : Loop to handle logging to file and TUI #### *async* action_initNodeDH(data: dict) Initialize diffie hellman key exchange #### SEE ALSO [`Cryptography.DHEFern.DHEFern`](/PierMesh/piermesh/src/branch/main/docs/Cryptography/DHEFern.md#Cryptography.DHEFern.DHEFern) : End to end encryption functionality #### *async* action_keyDeriveDH(data: dict) Derive key via diffie hellman key exchange #### *async* action_map(data: dict) Map new network data to internal network map #### SEE ALSO `Siph.network.Network` : Layered graph etwork representation #### *async* action_sendCatch(data: dict) Get catch and return the data to a peer #### SEE ALSO `Bubble.router.Router` : Routing class #### *async* action_sendToPeer(data: dict) Send data to a peer connected to the server * **Parameters:** **data** (*dict*) โ€“ Data passed from the filter, this is a generic object so itโ€™s similar on all actions here #### SEE ALSO `Filters.Protocols` : Protocol based packet filtering `webui.serve.Server` : Runs a light Microdot web server with http/s and websocket functionality `webui.serve.Server.sendToPeer` : Function to actually execute the action #### cLog(priority: int, message: str) Convenience function that logs to the ui and log files * **Parameters:** * **priority** (*int*) โ€“ Priority of message to be passed to logging * **message** (*str*) โ€“ Message to log * **Return type:** None #### *async* monitor() Monitor and log ram and cpu usage #### *async* spongeListen() Loop to watch for tasks to do #### SEE ALSO `Filters.base.sieve` : Packet filtering/parsing ### Notes We use a common technique here that calls the function from our preloaded actions via dictionary entry