Return an event object suitable for the named transport

    :param IOLoop io_loop: Pass in an io_loop if you want asynchronous
                           operation for obtaining events. Eg use of
                           set_event_handler() API. Otherwise, operation
                           will be synchronous.

def get_event(
        node, sock_dir=None, transport='zeromq',
        opts=None, listen=True, io_loop=None, keep_loop=False, raise_errors=False):
    '''
    Return an event object suitable for the named transport

    :param IOLoop io_loop: Pass in an io_loop if you want asynchronous
                           operation for obtaining events. Eg use of
                           set_event_handler() API. Otherwise, operation
                           will be synchronous.
    '''
    sock_dir = sock_dir or opts['sock_dir']
    # TODO: AIO core is separate from transport
    if node == 'master':
        return MasterEvent(sock_dir,
                           opts,
                           listen=listen,
                           io_loop=io_loop,
                           keep_loop=keep_loop,
                           raise_errors=raise_errors)
    return SaltEvent(node,
                     sock_dir,
                     opts,
                     listen=listen,
                     io_loop=io_loop,
                     keep_loop=keep_loop,
                     raise_errors=raise_errors)