mms_api.h revision cee0fb94c0d4227de0a00efc162fb2739844b641
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore/*
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * CDDL HEADER START
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore *
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * The contents of this file are subject to the terms of the
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * Common Development and Distribution License (the "License").
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * You may not use this file except in compliance with the License.
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore *
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * or http://www.opensolaris.org/os/licensing.
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * See the License for the specific language governing permissions
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * and limitations under the License.
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore *
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * When distributing Covered Code, include this CDDL HEADER in each
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * If applicable, add the following below this CDDL HEADER, with the
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * fields enclosed by brackets "[]" replaced with your own identifying
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * information: Portions Copyright [yyyy] [name of copyright owner]
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore *
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * CDDL HEADER END
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore *
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore * Use is subject to license terms.
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#ifndef __MMS_API_H
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#define __MMS_API_H
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#define MMS_API_VERSION 1000
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#define MMS_API_RSP_UNACC 0
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#define MMS_API_RSP_ACC 1
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#define MMS_API_RSP_FINAL 2
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#define MMS_API_RSP_FINAL_INTR 3
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#define MMS_API_RSP_FINAL_ERR 4
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#define MMS_API_RSP_FINAL_CANC 5
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#define MMS_API_RSP_EVENT 7
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#define MMS_API_NO 0
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#define MMS_API_YES 1
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#define MMS_API_OK 0
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#define MMS_API_ERROR 1
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#define MMS_API_UNCONFIG 0
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#define MMS_API_CONFIG 1
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#define MMS_API_FAILURE 2
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#define MMS_API_ASYNC 1
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#define MMS_API_SYNC 2
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amoretypedef struct mms_event {
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore int mms_ev_code;
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore void *mms_ev_data;
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore} mms_event_t;
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amoretypedef struct mms_ev_volume {
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore char *mms_ev_volume_name;
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore char *mms_ev_media_type;
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore} mms_ev_volume_t;
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amoretypedef struct mms_ev_library {
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore char *mms_ev_inst_name;
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore char *mms_ev_lib_name;
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore} mms_ev_library_t;
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amoretypedef struct mms_ev_dm {
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore char *mms_ev_inst_name;
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore char *mms_ev_drive_name;
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore char *mms_ev_host;
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore} mms_ev_dm_t;
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amoretypedef struct mms_ev_message {
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore char *mms_ev_who;
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore char *mms_ev_id;
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore char *mms_ev_client;
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore char *mms_ev_inst;
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore char *mms_ev_level;
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore char *mms_ev_text;
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore char *mms_ev_msg;
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore} mms_ev_message_t;
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amoretypedef struct mms_rsp_ele {
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore mms_list_node_t mms_rsp_next;
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore int mms_rsp_type; /* Type of response or */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* event type */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore char *mms_rsp_tid; /* Task id of response or */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* event tag */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore char *mms_rsp_str; /* Response or event string */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore mms_par_node_t *mms_rsp_cmd; /* Parse tree of string */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore} mms_rsp_ele_t;
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amoretypedef struct mms_send_ele {
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore mms_list_node_t mms_send_next;
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore char *mms_send_tid; /* Task id of cmd to be sent */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* over a async connection */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore char *mms_send_cmd; /* Command to be sent */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore} mms_send_ele_t;
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amoretypedef struct mms_cmd_ele {
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore mms_list_node_t mms_cmd_next;
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore int mms_cmd_type; /* Type of command async,sync */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore char *mms_cmd_tid; /* Task id of outstanding cmd */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore char *mms_cmd_cmd; /* Outstanding command */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore void (*mms_cmd_callbk)(void *arg, void *arg1);
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* If async cmd, callback */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* function to use for */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* response */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore void *mms_cmd_callbk_param; /* User param to be sent to */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* callback function */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore} mms_cmd_ele_t;
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amoretypedef struct mms_callbk {
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore void (*mms_func)(void *arg); /* Callback */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore void *mms_param; /* Callback parameter */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore} mms_callbk_t;
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amoretypedef struct mms_rsp_callbk {
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore void (*mms_func)(void *arg, void *arg1);
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* Callback */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore void *mms_param; /* Callback parameter */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore} mms_rsp_callbk_t;
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amoretypedef struct mms_session {
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore mms_list_t mms_cmd_list; /* Outstanding command list */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore mms_list_t mms_rsp_list; /* Sync commands final */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* response list */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore mms_list_t mms_ev_list; /* List of events received */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore int mms_thrd_cnt; /* Number of outstanding */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* threads in session */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore int mms_api_state; /* Current state of the */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* connection, config, */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* unconfig, or error */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore int mms_api_mode; /* Type of connection, SYNC */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* or combination with ASYNC */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore int mms_api_errcode; /* If a internal processing */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* error occurs this get */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* set to show what caused */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* the error to happen */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore int mms_api_rstarted; /* For async mode, tells when */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* reader thread has started */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore char *mms_acc_tid; /* Task id of cmd waiting on */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* accept response */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore boolean_t mms_be_pending; /* begin-end sequence pending */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore char *cprefix; /* Set by the client to tag */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* who is using the API */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore void (*clog) (char *, char *); /* Function to use to log */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* API errors into the */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* clients log file */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore mms_rsp_ele_t *mms_acc_rsp; /* Pointer to the latest */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* accept/unaccept response */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore mms_t mms_conn; /* MMS socket connection */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* structure pointer */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore pthread_mutex_t mms_cnt_mutex; /* Controls access to */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* mms_thrd_cnt */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore pthread_cond_t mms_cnt_cv; /* Used for waking up thread */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* waiting to shutdown the */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* session when all */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* outstanding threads */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* to MM have stopped */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore pthread_mutex_t mms_cmd_mutex; /* Controls access to */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* mms_cmd_list */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore pthread_mutex_t mms_cacc_mutex; /* Stops other send cmds */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* from sending their cmds */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* until current cmd gets */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* acc/unacc response */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore pthread_mutex_t mms_acc_mutex; /* Stops the reader thread */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* and the thread waiting on */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* acc/unacc response from */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* accessing shared memory */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* at the same time */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore pthread_cond_t mms_acc_cv; /* Used for waking up thread */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* waiting on accept/unaccept */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* response */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore pthread_mutex_t mms_rsp_mutex; /* Controls access to sync */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* cmds response list */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore pthread_cond_t mms_rsp_cv; /* Used for waking up threads */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* waiting on a final rsp */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore pthread_mutex_t mms_conn_mutex; /* Controls socket access */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* to MMS */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore pthread_mutex_t mms_reading; /* Controls reading from MMS */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* socket */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore pthread_mutex_t mms_be_mutex; /* Controls begin-end's to */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* send */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore pthread_cond_t mms_be_cv;
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* thread in async mode */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore pthread_attr_t mms_reader_attr; /* Attribute for aysnc reader */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* thread */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore void (*mms_async_error)(void *arg); /* Used in case an internal */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* processing error is */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* encountered using a ASYNC */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* connection to notify the */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* client of the failure */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore void *mms_async_error_param; /* Error callback parameter */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore void (*mms_ev_callbk)(void *arg, void *arg1);
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* Event callback */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore void *mms_ev_callbk_param; /* Event callback parameter */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore pthread_mutex_t mms_ev_mutex; /* Controls access to event */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* list */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore pthread_cond_t mms_ev_cv; /* Used to wake up threads */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore /* waiting on events */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore} mms_session_t;
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amoreint mms_init(void **, int *);
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amoreint mms_ainit(void **, int *, mms_callbk_t *, mms_rsp_callbk_t *);
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amoreint mms_hello(void *, char *, char *, char *, char *, char *, char *, char *,
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore void *);
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amoreint mms_hello_net(void *, mms_network_cfg_t *, char *, void *);
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amoreint mms_goodbye(void *, int);
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amoreint mms_agoodbye(void *, int);
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amorevoid *mms_api_reader(void *);
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amorevoid *mms_api_writer(void *);
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amorevoid mms_send_errmsg(mms_session_t *sp, const char *, int, ...);
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amoreint mms_handle_err_rsp(void *, int *, int *, char **);
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amoreint mms_send_cmd(void *, char *, void **);
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amoreint mms_send_acmd(void *, char *, void (*)(), void *);
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amoreint mms_read_response(void *, char *, void **);
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amoreint mms_obtain_response(mms_session_t *, char *, mms_rsp_ele_t **, int);
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amoreint mms_read_event(void *, void **);
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amoreint mms_obtain_event(mms_session_t *, mms_rsp_ele_t **);
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amorevoid mms_free_event(void *);
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amorevoid mms_free_rsp(void *);
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amorevoid mms_free_cmd(mms_cmd_ele_t *);
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amorevoid mms_free_send(mms_send_ele_t *);
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amorechar *mms_get_attribute(void *, char *, void **);
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amoremms_rsp_ele_t *mms_gen_err_rsp(char *, int, char *);
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amorevoid mms_serr(mms_trace_sev_t, char *, int, const char *, ...);
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amoreextern char mms_empty_string[];
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore/* This may need to be part of a session to show which events a */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore/* session of the api has registered for */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amoreextern char *mms_notify[];
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amoreextern char *mms_event[];
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amoreextern char *mms_scope[];
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amoreextern char *mms_api[];
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore/* MACROS */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#define mms_set_errlog(session, log) { \
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore ((mms_session_t *)session)->clog = log; \
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore }
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#define mms_set_errpfx(session, prefix) { \
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore ((mms_session_t *)session)->cprefix = strdup(prefix); \
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore }
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#define mms_rsp_type(rsp) ((mms_rsp_ele_t *)rsp)->mms_rsp_type
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#define mms_event_type(rsp) ((mms_rsp_ele_t *)rsp)->mms_rsp_tid
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#define mms_get_tree(rsp) ((mms_rsp_ele_t *)rsp)->mms_rsp_cmd
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#define mms_get_str(rsp) ((mms_rsp_ele_t *)rsp)->mms_rsp_str
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#define mms_state_failed(_sess) \
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore ((mms_session_t *)(_sess))->mms_api_state != MMS_API_CONFIG
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore#endif /* __MMS_API_H */
88447a05f537aabe9a1bc3d5313f22581ec992a7Garrett D'Amore