Add lttng_trace_format::sptr to ltt_session
[deliverable/lttng-tools.git] / src / bin / lttng-sessiond / session.cpp
index e9d7261031d632fc44e4f820621a8e471a3e9e74..75e976e0a14e7886430ccf3476698aa3e34e47cb 100644 (file)
@@ -1036,10 +1036,11 @@ void session_release(struct urcu_ref *ref)
        }
        lttng_dynamic_array_reset(&session->destroy_notifiers);
        lttng_dynamic_array_reset(&session->clear_notifiers);
+
        free(session->last_archived_chunk_name);
        free(session->base_path);
        lttng_trigger_put(session->rotate_trigger);
-       free(session);
+       delete (session);
        if (session_published) {
                /*
                 * Broadcast after free-ing to ensure the memory is
@@ -1197,7 +1198,10 @@ end:
  * Create a new session and add it to the session list.
  * Session list lock must be held by the caller.
  */
-enum lttng_error_code session_create(const char *name, uid_t uid, gid_t gid,
+enum lttng_error_code session_create(const char *name,
+               uid_t uid,
+               gid_t gid,
+               lttng::trace_format_descriptor::uptr& trace_format,
                struct ltt_session **out_session)
 {
        int ret;
@@ -1215,9 +1219,11 @@ enum lttng_error_code session_create(const char *name, uid_t uid, gid_t gid,
                        goto error;
                }
        }
-       new_session = zmalloc<ltt_session>();
-       if (!new_session) {
-               PERROR("Failed to allocate an ltt_session structure");
+
+       try {
+               new_session = new ltt_session();
+       } catch (const std::exception& ex) {
+               ERR("Failed to create ltt_session: %s", ex.what());
                ret_code = LTTNG_ERR_NOMEM;
                goto error;
        }
@@ -1231,6 +1237,8 @@ enum lttng_error_code session_create(const char *name, uid_t uid, gid_t gid,
        urcu_ref_init(&new_session->ref);
        pthread_mutex_init(&new_session->lock, NULL);
 
+       new_session->trace_format = std::move(trace_format);
+
        new_session->creation_time = time(NULL);
        if (new_session->creation_time == (time_t) -1) {
                PERROR("Failed to sample session creation time");
This page took 0.060626 seconds and 5 git commands to generate.