/* * Copyright (c) 2019 Cisco and/or its affiliates. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at: * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef SRC_VNET_SESSION_APPLICATION_LOCAL_H_ #define SRC_VNET_SESSION_APPLICATION_LOCAL_H_ #include local_session_t *application_local_listen_session_alloc (application_t * app); void application_local_listen_session_free (application_t * app, local_session_t * ll); void application_local_listener_session_endpoint (local_session_t * ll, session_endpoint_t * sep); local_session_t *app_worker_local_session_alloc (app_worker_t * app_wrk); void app_worker_local_session_free (app_worker_t * app_wrk, local_session_t * s); local_session_t *app_worker_get_local_session (app_worker_t * app_wrk, u32 session_index); local_session_t *app_worker_get_local_session_from_handle (session_handle_t handle); void app_worker_local_sessions_free (app_worker_t * app_wrk); int app_worker_local_session_cleanup (app_worker_t * client_wrk, app_worker_t * server_wrk, local_session_t * ls); int app_worker_local_session_connect_notify (local_session_t * ls); int app_worker_local_session_connect (app_worker_t * client, app_worker_t * server, local_session_t * ls, u32 opaque); int app_worker_local_session_disconnect (u32 app_or_wrk, local_session_t * ls); int app_worker_local_session_disconnect_w_index (u32 app_or_wrk, u32 ls_index); void app_worker_format_local_sessions (app_worker_t * app_wrk, int verbose); void app_worker_format_local_connects (app_worker_t * app, int verbose); void mq_send_local_session_disconnected_cb (u32 app_or_wrk, local_session_t * ls); always_inline local_session_t * application_get_local_listen_session (application_t * app, u32 session_index) { return pool_elt_at_index (app->local_listen_sessions, session_index); } always_inline local_session_t * application_get_local_listener_w_handle (session_handle_t handle) { u32 server_index, session_index; application_t *app; local_session_parse_handle (handle, &server_index, &session_index); app = application_get (server_index); return application_get_local_listen_session (app, session_index); } always_inline u8 application_local_session_listener_has_transport (local_session_t * ls) { transport_proto_t tp; tp = session_type_transport_proto (ls->listener_session_type); return (tp != TRANSPORT_PROTO_NONE); } #endif /* SRC_VNET_SESSION_APPLICATION_LOCAL_H_ */ /* * fd.io coding-style-patch-verification: ON * * Local Variables: * eval: (c-set-style "gnu") * End: */