mirror of
				https://github.com/liberatedsystems/openCom-Companion.git
				synced 2025-07-08 05:07:21 +02:00 
			
		
		
		
	Added basic plugin examples
This commit is contained in:
		
							parent
							
								
									ced7e881b9
								
							
						
					
					
						commit
						84bc1f786d
					
				
							
								
								
									
										38
									
								
								docs/example_plugins/basic.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								docs/example_plugins/basic.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,38 @@
 | 
				
			|||||||
 | 
					import RNS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class BasicCommandPlugin(SidebandCommandPlugin):
 | 
				
			||||||
 | 
					    command_name = "basic_example"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def start(self):
 | 
				
			||||||
 | 
					        # Do any initialisation work here
 | 
				
			||||||
 | 
					        RNS.log("Basic command plugin example starting...")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # And finally call start on superclass
 | 
				
			||||||
 | 
					        super().start()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def stop(self):
 | 
				
			||||||
 | 
					        # Do any teardown work here
 | 
				
			||||||
 | 
					        pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # And finally call stop on superclass
 | 
				
			||||||
 | 
					        super().stop()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def handle_command(self, arguments, lxm):
 | 
				
			||||||
 | 
					        response_content = "Hello "+RNS.prettyhexrep(lxm.source_hash)+". "
 | 
				
			||||||
 | 
					        response_content += "This is a response from the basic command example. It doesn't do much, but here is a list of the arguments you included:\n"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for argument in arguments:
 | 
				
			||||||
 | 
					            response_content += "\n"+str(argument)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # Let the Sideband core send a reply.
 | 
				
			||||||
 | 
					        self.get_sideband().send_message(
 | 
				
			||||||
 | 
					            response_content,
 | 
				
			||||||
 | 
					            lxm.source_hash,
 | 
				
			||||||
 | 
					            False,              # Don't use propagation by default, try direct first
 | 
				
			||||||
 | 
					            skip_fields=True,   # Don't include any additional fields automatically
 | 
				
			||||||
 | 
					            no_display=True     # Dot't display this message in the message stream
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Finally, tell Sideband what class in this
 | 
				
			||||||
 | 
					# file is the actual plugin class.
 | 
				
			||||||
 | 
					plugin_class = BasicCommandPlugin
 | 
				
			||||||
							
								
								
									
										0
									
								
								docs/example_plugins/comic.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								docs/example_plugins/comic.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										34
									
								
								docs/example_plugins/service.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								docs/example_plugins/service.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,34 @@
 | 
				
			|||||||
 | 
					import RNS
 | 
				
			||||||
 | 
					import time
 | 
				
			||||||
 | 
					import threading
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class BasicServicePlugin(SidebandServicePlugin):
 | 
				
			||||||
 | 
					    service_name = "service_example"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def service_jobs(self):
 | 
				
			||||||
 | 
					        while self.should_run:
 | 
				
			||||||
 | 
					            time.sleep(5)
 | 
				
			||||||
 | 
					            RNS.log("Service ping from "+str(self))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        RNS.log("Jobs stopped running for "+str(self))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def start(self):
 | 
				
			||||||
 | 
					        # Do any initialisation work here
 | 
				
			||||||
 | 
					        RNS.log("Basic service plugin example starting...")
 | 
				
			||||||
 | 
					        self.should_run = True
 | 
				
			||||||
 | 
					        self.service_thread = threading.Thread(target=self.service_jobs, daemon=True)
 | 
				
			||||||
 | 
					        self.service_thread.start()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # And finally call start on superclass
 | 
				
			||||||
 | 
					        super().start()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def stop(self):
 | 
				
			||||||
 | 
					        # Do any teardown work here
 | 
				
			||||||
 | 
					        self.should_run = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # And finally call stop on superclass
 | 
				
			||||||
 | 
					        super().stop()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Finally, tell Sideband what class in this
 | 
				
			||||||
 | 
					# file is the actual plugin class.
 | 
				
			||||||
 | 
					plugin_class = BasicServicePlugin
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user