# nopoll_ctx_set_on_msg

Definition: | include nopoll.e nopoll_ctx_set_on_msg(atom ctx, on_msg_cb, pUserData=NULL)
Description: | Set a general handler to get notifications about a message received over any connection that is running under the provided context. ctx: The context where the notification will happen on_msg_cb: The handler to be called when an incoming message is received. pUserData: User defined pointer that is passed in into the handler when called. Note that the handler configured here will be overriden by the handler configured by nopoll_conn_set_on_msg().
Example: | Copy
    --DEV not tested!
    include nopoll.e

    function listener_on_message(atom /*ctx*/, conn, pMsg, /*user_data*/)
        printf(1,"%s\nThe size of message is %d bytes\n",
                 {nopoll_msg_get_payload(pMsg),
                  nopoll_msg_get_payload_size(pMsg)})
        ?nopoll_conn_send_text(conn, "Hello World")
        return 0 -- (rqd for call_back, otherwise ignored)
    end function
    constant listener_on_message_cb = call_back(routine_id("listener_on_message"))

    atom ctx = nopoll_ctx_new()
    if ctx=NULL then ?9/0 end if

    --DEV??
    -- create a listener to receive connections on port 1234
    atom listener = nopoll_listener_new(ctx, "0.0.0.0", "9999");
    if not nopoll_conn_is_ok(listener) then ?9/0 end if

    -- now set a handler that will be called when a message (fragment or not) is received
    nopoll_ctx_set_on_msg(ctx, listener_on_message_cb, NULL)

    -- now call to wait for the loop to notify events
    integer error_code = nopoll_loop_wait(ctx, 0)

    nopoll_ctx_unref(ctx)
See Also: | nopoll_conn_set_on_msg, nopoll_conn_is_ok, nopoll_conn_is_ready, nopoll_msg_get_payload, nopoll_msg_get_payload_size, nopoll_conn_send_text, nopoll_loop_wait