introduce the initialization code for the aircraft data receiver
This commit is contained in:
		
							
								
								
									
										38
									
								
								aman/com/EuroscopeReceiver.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								aman/com/EuroscopeReceiver.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,38 @@ | ||||
| #!/usr/bin/env python | ||||
|  | ||||
| import zmq | ||||
| from zmq.asyncio import Context | ||||
| import zmq.auth | ||||
| from zmq.auth.asyncio import AsyncioAuthenticator | ||||
|  | ||||
| from pathlib import Path | ||||
| from typing import Union, Optional | ||||
|  | ||||
| # @brief Receives the information of EuroScope | ||||
| def EuroscopeReceiver(): | ||||
|     # @brief Initializes the ZMQ socket | ||||
|     # @param[in] address The server address | ||||
|     # @param[in] serverKeyPath Path to the server's keypair | ||||
|     # @param[in] clientKeys Path to the client's keypairs | ||||
|     def __init__(self, address: str, serverKeyPath: Union[str, Path], clientKeys: Union[str, Path]): | ||||
|         self.context = Context.instance() | ||||
|  | ||||
|         # initialize the authentication module | ||||
|         authLocation = ( | ||||
|             str(clientKeys) | ||||
|         ) | ||||
|         self.auth = AsyncioAuthenticator(context = self.context) | ||||
|         self.auth.configure_curve(domain='*', location = authLocation) | ||||
|         self.auth.allow('127.0.0.1') | ||||
|         self.auth.start() | ||||
|  | ||||
|         # initialize the socket | ||||
|         self.socket = self.context.socket(zmq.REP) | ||||
|         keys = zmq.auth.load_certificate(serverKeyPath) | ||||
|         self.socket.setsockopt(zmq.CURVE_PUBLICKEY, keys[0]) | ||||
|         self.socket.setsockopt(zmq.CURVE_SECRETKEY, keys[1]) | ||||
|         self.socket.setsockopt(zmq.CURVE_SERVER, True) | ||||
|         self.socket.bind(address) | ||||
|  | ||||
|     def __exit__(self, *_exc): | ||||
|         self.auth.stop() | ||||
		Reference in New Issue
	
	Block a user