Files
secondo/apis/python2/SecondoAPI/.ipynb_checkpoints/OptimizerServer-checkpoint.ipynb
2026-01-23 17:03:45 +08:00

114 lines
3.9 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from io import *\n",
"import asyncio\n",
"import ast\n",
"import nest_asyncio\n",
"nest_asyncio.apply()\n",
"\n",
"class Optimizer():\n",
" \n",
" def __init__(self, server, port, enable):\n",
" \n",
" self.server = server\n",
" self.port = port\n",
" self.enable = enable\n",
" self.initialized = False\n",
" self.conn = None\n",
" self.optreader = None\n",
" self.optwriter = None\n",
" loop = asyncio.get_event_loop()\n",
" loop.run_until_complete(self.connect())\n",
" \n",
" \n",
" async def connect(self):\n",
" \n",
" if self.enable != \"true\":\n",
" print(\"Optimizer Server cant not be contacted according to configurations.\")\n",
" return\n",
" elif self.initialized:\n",
" print(\"Connection to Optimizer Server is already stablished.\")\n",
" return\n",
" elif self.enable == \"true\" and self.initialized == False:\n",
" print(\"Starting the connection...\")\n",
" self.conn = asyncio.open_connection(self.server, int(self.port))\n",
" self.optreader, self.optwriter = await asyncio.wait_for(self.conn, timeout = 10)\n",
" \n",
" message = \"<who>\\n\"\n",
" while True:\n",
" self.optwriter.write(message.encode(\"utf-8\"))\n",
" await self.optwriter.drain()\n",
" \n",
" print(\"Message sent to optserver...\")\n",
" print(message.encode(\"utf-8\"))\n",
" \n",
" print(\"wants to read from optserver...\")\n",
" line = await self.optreader.readline()\n",
" print(\"read from optserver...\")\n",
" \n",
" line = line.decode(\"utf-8\")\n",
" print(f'Received: {line!r}')\n",
" \n",
" if not line:\n",
" print(\"No response from Server!\")\n",
" self.initialized = False\n",
" break\n",
" \n",
" if line != \"<optimizer>\\n\":\n",
" print(f'Received wrong data: {line!r}')\n",
" self.initialized = False\n",
" break\n",
" \n",
" if line == \"<optimizer>\\n\":\n",
" #print(f'Received: {line!r}')\n",
" self.initialized = True\n",
" print(\"Connection to Optimizer stablished...\")\n",
" break\n",
" \n",
" print(self.initialized)\n",
" \n",
" def get_opt_conn(self):\n",
" if self.conn:\n",
" return self.conn\n",
" else:\n",
" print(\"Connection Error!\")\n",
" return None\n",
" \n",
" def get_opt_streams(self):\n",
" if self.optreader and self.optwriter:\n",
" return self.optreader, self.optwriter\n",
" else:\n",
" print(\"Connection Error, Streams not connected!\")\n",
" return None"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}