vcl/session: add api for changing session app worker
[vpp.git] / src / vnet / session / application.h
index 0ac2b25..1d2064d 100644 (file)
 typedef struct _stream_session_cb_vft
 {
   /** Notify server of new segment */
-  int (*add_segment_callback) (u32 api_client_index,
-                              const ssvm_private_t * ssvm_seg);
+  int (*add_segment_callback) (u32 api_client_index, u64 segment_handle);
+
   /** Notify server of new segment */
-  int (*del_segment_callback) (u32 api_client_index,
-                              const ssvm_private_t * ssvm_seg);
+  int (*del_segment_callback) (u32 api_client_index, u64 segment_handle);
 
   /** Notify server of newly accepted session */
   int (*session_accept_callback) (stream_session_t * new_session);
@@ -212,6 +211,7 @@ typedef struct _vnet_app_worker_add_del_args
   u32 wrk_map_index;           /**< Index to delete or return value if add */
   u32 api_client_index;                /**< Binary API client index */
   ssvm_private_t *segment;     /**< First segment in segment manager */
+  u64 segment_handle;          /**< Handle for the segment */
   svm_msg_q_t *evt_q;          /**< Worker message queue */
   u8 is_add;                   /**< Flag set if addition */
 } vnet_app_worker_add_del_args_t;
@@ -225,14 +225,17 @@ int app_worker_alloc_and_init (application_t * app, app_worker_t ** wrk);
 app_worker_t *app_worker_get (u32 wrk_index);
 app_worker_t *app_worker_get_if_valid (u32 wrk_index);
 application_t *app_worker_get_app (u32 wrk_index);
+int app_worker_own_session (app_worker_t * app_wrk, stream_session_t * s);
 void app_worker_free (app_worker_t * app_wrk);
 int app_worker_open_session (app_worker_t * app, session_endpoint_t * tep,
                             u32 api_context);
 segment_manager_t *app_worker_get_listen_segment_manager (app_worker_t *,
                                                          stream_session_t *);
 segment_manager_t *app_worker_get_connect_segment_manager (app_worker_t *);
+segment_manager_t
+  * app_worker_get_or_alloc_connect_segment_manager (app_worker_t *);
 int app_worker_alloc_connects_segment_manager (app_worker_t * app);
-int app_worker_add_segment_notify (u32 app_or_wrk, ssvm_private_t * fs);
+int app_worker_add_segment_notify (u32 app_or_wrk, u64 segment_handle);
 u32 app_worker_n_listeners (app_worker_t * app);
 stream_session_t *app_worker_first_listener (app_worker_t * app,
                                             u8 fib_proto,