import asyncio
import sys


import pykx as kx

port = 5010
if len(sys.argv)>1:
    port = int(sys.argv[1])


def qval_sync(query):
    res = kx.q.value(query)
    print("sync")
    print(f'{query}\n{res}\n')
    return res


def qval_async(query):
    res = kx.q.value(query)
    print("async")
    print(f'{query}\n{res}\n')


async def main():
    kx.q.z.pg = qval_sync
    kx.q.z.ps = qval_async
    kx.q('@[system"l ",;"s.k_";{show "Failed to load SQL"}]')
    kx.q('tab:([]10000?`a`b`c;10000?1f;10000?10)')
    async with kx.RawQConnection(port=port, as_server=True, conn_gc_time=20.0) as q:
        print('Server Initialized')
        while True:
            q.poll_recv()


if __name__ == "__main__":
    asyncio.run(main())
