Provides decorator to announce the presence of a server to a host machine.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
2.4 KiB

# def announce_server(task=None, loop=None, **outer_kwargs):
# if task is None:
# return lambda f: announce_server(f, loop=loop, **outer_kwargs)
# @wraps(task)
# def wrapper(*args, **kwargs):
# async def main(*args, **kwargs):
# if loop is not None:
# host_block_thread = loop.run_in_executor(None, task)
# else:
# host_block_thread = asyncio.to_thread(task) # python 3.9+
# # Announce the server to the host
# await _announce_server(**outer_kwargs)
# # Wait for host_block to finish
# await host_block_thread
# if loop is not None:
# task = loop.create_task(main(*args, **kwargs))
# else:
# task = asyncio.run(main(*args, **kwargs))
# return task
# return wrapper
# def announce_server(task=None, loop=None, **outer_kwargs):
# if task is None:
# return lambda f: announce_server(f, loop=loop, **outer_kwargs)
# @wraps(task)
# async def wrapper(*args, **kwargs):
# if not asyncio.iscoroutinefunction(task):
# # If the decorated function is not a coroutine, wrap it in a coroutine
# task = asyncio.coroutine(task)
# if loop is not None:
# host_block_thread = loop.run_in_executor(None, task)
# else:
# host_block_thread = asyncio.to_thread(task)
# # Announce the server to the host
# await _announce_server(**outer_kwargs)
# # Wait for host_block to finish
# await host_block_thread
# return wrapper
# def announce_server(task=None, loop=None, **outer_kwargs):
# if task is None:
# return lambda f: announce_server(f, loop=loop, **outer_kwargs)
# if loop is None:
# loop = asyncio.get_event_loop()
# @wraps(task)
# def wrapper(*args, **kwargs):
# async def main(*args, **kwargs):
# if asyncio.iscoroutinefunction(task):
# # If the task is async, just await it
# host_block_thread = task(*args, **kwargs)
# else:
# host_block_thread = loop.run_in_executor(None, task, *args, **kwargs)
# # Announce the server to the host
# await _announce_server(**outer_kwargs)
# # Wait for host_block to finish
# await host_block_thread
# task = loop.create_task(main(*args, **kwargs))
# return task
# return wrapper