| 166 | |
| 167 | |
| 168 | class CompletionServer: |
| 169 | def __init__(self, port): |
| 170 | self.ended = False |
| 171 | self.port = port |
| 172 | self.socket = None # socket to send messages. |
| 173 | self.exit_process_on_kill = True |
| 174 | self.processor = Processor() |
| 175 | |
| 176 | def connect_to_server(self): |
| 177 | from _pydev_bundle._pydev_saved_modules import socket |
| 178 | |
| 179 | self.socket = s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
| 180 | try: |
| 181 | s.connect((HOST, self.port)) |
| 182 | except: |
| 183 | sys.stderr.write("Error on connect_to_server with parameters: host: %s port: %s\n" % (HOST, self.port)) |
| 184 | raise |
| 185 | |
| 186 | def get_completions_message(self, defFile, completionsList): |
| 187 | """ |
| 188 | get message with completions. |
| 189 | """ |
| 190 | return self.processor.format_completion_message(defFile, completionsList) |
| 191 | |
| 192 | def get_token_and_data(self, data): |
| 193 | """ |
| 194 | When we receive this, we have 'token):data' |
| 195 | """ |
| 196 | token = "" |
| 197 | for c in data: |
| 198 | if c != ")": |
| 199 | token = token + c |
| 200 | else: |
| 201 | break |
| 202 | |
| 203 | return token, data.lstrip(token + "):") |
| 204 | |
| 205 | def emulated_sendall(self, msg): |
| 206 | MSGLEN = 1024 * 20 |
| 207 | |
| 208 | totalsent = 0 |
| 209 | while totalsent < MSGLEN: |
| 210 | sent = self.socket.send(msg[totalsent:]) |
| 211 | if sent == 0: |
| 212 | return |
| 213 | totalsent = totalsent + sent |
| 214 | |
| 215 | def send(self, msg): |
| 216 | self.socket.sendall(bytearray(msg, "utf-8")) |
| 217 | |
| 218 | def run(self): |
| 219 | # Echo server program |
| 220 | try: |
| 221 | from _pydev_bundle import _pydev_log |
| 222 | |
| 223 | log = _pydev_log.Log() |
| 224 | |
| 225 | dbg(SERVER_NAME + " connecting to java server on %s (%s)" % (HOST, self.port), INFO1) |