Client for sending SQL commands to renderer via ZeroMQ REQ socket
| 123 | |
| 124 | |
| 125 | class ZeroMQSQLClient: |
| 126 | """Client for sending SQL commands to renderer via ZeroMQ REQ socket""" |
| 127 | |
| 128 | def __init__(self, host, port): |
| 129 | self.host = host |
| 130 | self.port = port |
| 131 | self.context = zmq.Context() |
| 132 | self.socket = None |
| 133 | |
| 134 | def connect(self): |
| 135 | """Connect to the renderer's REP socket""" |
| 136 | self.socket = self.context.socket(zmq.REQ) |
| 137 | self.socket.connect(f"tcp://{self.host}:{self.port}") |
| 138 | |
| 139 | def execute_sql(self, command: str) -> str: |
| 140 | """Send SQL command and receive response""" |
| 141 | if not self.socket: |
| 142 | return "Error: Not connected to renderer" |
| 143 | self.socket.send_string(command) |
| 144 | return self.socket.recv_string() |
| 145 | |
| 146 | def close(self): |
| 147 | """Close the connection""" |
| 148 | if self.socket: |
| 149 | self.socket.close() |
| 150 | self.context.term() |
| 151 | |
| 152 | |
| 153 | def _replace_scrollbar(st: scrolledtext.ScrolledText, style: str) -> None: |