mmsclient.c revision cee0fb94c0d4227de0a00efc162fb2739844b641
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China * CDDL HEADER START
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China * The contents of this file are subject to the terms of the
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China * Common Development and Distribution License (the "License").
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China * You may not use this file except in compliance with the License.
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China * or http://www.opensolaris.org/os/licensing.
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China * See the License for the specific language governing permissions
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China * and limitations under the License.
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China * When distributing Covered Code, include this CDDL HEADER in each
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China * If applicable, add the following below this CDDL HEADER, with the
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China * fields enclosed by brackets "[]" replaced with your own identifying
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China * information: Portions Copyright [yyyy] [name of copyright owner]
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China * CDDL HEADER END
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China * Use is subject to license terms.
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China#include <stdio.h>
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China#include <signal.h>
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China#include <pthread.h>
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China#include <mms.h>
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China#include <mms_cores.h>
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China#include <ctype.h>
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China#define BUFSZ 1024
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing Chinatypedef struct cli_data cli_data_t;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing Chinastruct cli_data {
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China char *instance;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China char *password;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China char *net_file;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China mms_network_cfg_t net;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China mms_list_t async_list;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China int async_waiting;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China pthread_mutex_t cli_async_lock;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China char *tag_to_sync;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China int wait_for_sync;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China int sync_has_namevalue;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China void *ssl_data;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China int waiting_to_exit;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China pthread_cond_t async_cv;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China pthread_mutex_t async_mutex;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing Chinatypedef struct cli_cmd cli_cmd_t;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing Chinastruct cli_cmd {
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China mms_list_node_t cli_cmd_next;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China int cmd_is_sync;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China char *cmd_text;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China char *cmd_task;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China mms_par_node_t *cmd_root;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China int cmd_namevalue;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing Chinacli_data_t data;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing Chinapthread_attr_t event_attr;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing Chinapthread_attr_t cmd_attr;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing Chinaint mms_ainit(void **, int *, mms_callbk_t *, mms_rsp_callbk_t *);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing Chinacli_alloc_cmd() {
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China cli_cmd_t *cmd;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China cmd = (cli_cmd_t *)calloc(1, sizeof (cli_cmd_t));
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China if (cmd == NULL) {
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China printf("could not allocate mem for new command");
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China cmd->cmd_text = NULL;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China cmd->cmd_task = NULL;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China cmd->cmd_rsp = NULL;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China cmd->cmd_namevalue = 0;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing Chinacli_destroy_cmd(cli_cmd_t *cmd) {
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China if (cmd->cmd_text != NULL) {
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China free(cmd->cmd_text);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China if (cmd->cmd_task != NULL) {
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China free(cmd->cmd_task);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China if (cmd->cmd_rsp != NULL) {
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China mms_free_rsp(cmd->cmd_rsp);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China if (cmd->cmd_tag != NULL) {
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China free(cmd->cmd_tag);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China if (cmd->cmd_root != NULL) {
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China mms_pn_destroy(cmd->cmd_root);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China/* LINTED: void arg is required */
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing Chinamms_catch_reader(void *ev)
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer printf("mms_catch_reader: Reader shutting down\n");
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing Chinamms_client_errlog(char *prefix, char *msg)
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China printf("mms_client_errlog: prefix - %s\nmsg - %s\n", prefix, msg);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing Chinaclient_handle_event(void *param, void *ev)
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China mms_rsp_ele_t *lev = (mms_rsp_ele_t *)ev;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China if (lev->mms_rsp_str != NULL) {
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China printf("Event received:\n %s\n",
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China lev->mms_rsp_str);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China fflush(stdout);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing Chinaattrlist(mms_par_node_t *attrlist, int namevalue)
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China mms_par_node_t *arg;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China mms_par_node_t *work;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China printf(" attrlist\n");
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China for (arg = mms_pn_lookup_arg(attrlist, NULL, NULL, &work);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China arg = mms_pn_lookup_arg(attrlist, NULL, NULL, &work)) {
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China if (arg->pn_type & MMS_PN_STRING) {
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China if (namevalue) {
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China arg->pn_string);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China arg = mms_pn_lookup_arg(attrlist,
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China NULL, NULL, &work);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China printf(" %s\n",
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China arg->pn_string);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China printf(" %s\n",
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China arg->pn_string);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing Chinatext_clause(mms_par_node_t *text, int namevalue)
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China mms_par_node_t *arg;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China mms_par_node_t *work;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China printf(" text\n");
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China for (arg = mms_pn_lookup_arg(text, NULL, NULL, &work);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China arg = mms_pn_lookup_arg(text, NULL, NULL, &work)) {
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China if ((arg->pn_type & MMS_PN_CLAUSE) &&
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China (strcmp(arg->pn_string, "attrlist") == 0)) {
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China attrlist(arg, namevalue);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China if (arg->pn_type & MMS_PN_STRING) {
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China if (namevalue) {
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China arg->pn_string);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China arg = mms_pn_lookup_arg(text,
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China NULL, NULL, &work);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China printf(" %s\n",
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China arg->pn_string);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China printf(" %s\n",
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China arg->pn_string);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing Chinacli_print_async_rsp(mms_rsp_ele_t *lrsp) {
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China /* lrsp->mms_rsp_cmd is */
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China /* the parse tree of the response */
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China mms_par_node_t *work;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China mms_par_node_t *text;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China mms_par_node_t *cmd;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China cli_cmd_t *cur_cmd;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China cli_cmd_t *next;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China int namevalue = 0;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China cmd = lrsp->mms_rsp_cmd;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China printf("success, %s\n",
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China lrsp->mms_rsp_tid);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China for (cur_cmd = mms_list_head(&data.async_list);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China cur_cmd != NULL;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China cur_cmd = next) {
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China next = mms_list_next(&data.async_list, cur_cmd);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China /* Test task and remove if the same */
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China if (strcmp(cur_cmd->cmd_task,
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China lrsp->mms_rsp_tid) == 0) {
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China namevalue = cur_cmd->cmd_namevalue;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China /* For each text clause print the results */
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China for (text = mms_pn_lookup(cmd,
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China "text", MMS_PN_CLAUSE, &work);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China text = mms_pn_lookup(cmd,
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China "text", MMS_PN_CLAUSE, &work)) {
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China text_clause(text, namevalue);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China fflush(stdout);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing Chinacli_print_sync_rsp(mms_rsp_ele_t *lrsp) {
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China /* lrsp->mms_rsp_cmd is */
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China /* the parse tree of the response */
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China mms_par_node_t *work;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China mms_par_node_t *text;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China mms_par_node_t *cmd;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China cmd = lrsp->mms_rsp_cmd;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China printf("success, %s\n",
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China lrsp->mms_rsp_tid);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China /* For each text clause print the results */
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China for (text = mms_pn_lookup(cmd,
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China "text", MMS_PN_CLAUSE, &work);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China text = mms_pn_lookup(cmd,
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China "text", MMS_PN_CLAUSE, &work)) {
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China text_clause(text, data.sync_has_namevalue);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China data.sync_has_namevalue = 0;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China fflush(stdout);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing Chinamms_client_handle_rsp(void *rsp)
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China mms_rsp_ele_t *lrsp = (mms_rsp_ele_t *)rsp;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China switch (mms_rsp_type(rsp)) {
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China case MMS_API_RSP_UNACC:
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China printf("Command was not accepted\n");
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China printf("Response - %s\n", lrsp->mms_rsp_str);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China case MMS_API_RSP_FINAL:
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China printf("Command was successful\n");
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China cli_print_sync_rsp(lrsp);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China case MMS_API_RSP_FINAL_ERR:
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China printf("Command received an error response\n");
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China printf("Response - %s\n", lrsp->mms_rsp_str);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China if (mms_handle_err_rsp(rsp, &class, &code,
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China &msg) != MMS_API_OK) {
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China printf("Error response handler failed\n");
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China printf("Error class %d, %s\n", class,
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China mms_sym_code_to_str(class));
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China printf("Error code %d, %s\n", code,
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China mms_sym_code_to_str(code));
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China if (msg != NULL)
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China printf("Error message:\n%s\n", msg);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China printf("No message clause in error rsp\n");
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China case MMS_API_RSP_FINAL_CANC:
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China printf("Command received a cancelled response\n");
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China printf("Response - %s\n", lrsp->mms_rsp_str);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China printf("Unknow response type\n");
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China printf("Response - %s\n", lrsp->mms_rsp_str);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China/* LINTED: param required */
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing Chinamms_client_handle_async_rsp(void *param, void *rsp)
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China mms_rsp_ele_t *lrsp = (mms_rsp_ele_t *)rsp;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China cli_cmd_t *cur_cmd;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China cli_cmd_t *next;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China cli_cmd_t *remove_cmd;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China int found_other = 0;
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China pthread_mutex_lock(&data.
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China cli_async_lock);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China switch (mms_rsp_type(rsp)) {
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China case MMS_API_RSP_UNACC:
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China printf("Command was not accepted\n");
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China printf("Response - %s\n", lrsp->mms_rsp_str);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China case MMS_API_RSP_FINAL:
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China printf("\n\nCommand was successful\n");
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China cli_print_async_rsp(lrsp);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China printf("\n\n");
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China case MMS_API_RSP_FINAL_ERR:
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China printf("Command received an error response\n");
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China printf("Response - %s\n", lrsp->mms_rsp_str);
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China if (mms_handle_err_rsp(rsp, &class, &code,
04b6cca3fef9f6205a9aa479c48d196116193dd9lucy wang - Sun Microsystems - Beijing China &msg) != MMS_API_OK) {
case MMS_API_RSP_FINAL_CANC:
cur_cmd);
if (!found_other) {
int rc;
int vers;
#ifdef MMS_OPENSSL
PTHREAD_CREATE_DETACHED)) != 0) {
PTHREAD_CREATE_DETACHED)) != 0) {
getpid());
usage(void)
int rc;
if (rc) {
&work);
return (NULL);
return (NULL);
cli_print_events() {
cli_mmp_prompt() {
int go = 0;
while (go) {
go = 0;
sizeof (cmd_buf));
cli_print_async() {
int is_async = 0;
int prompt_only = 0;
char *corename;
optarg);
optarg);
usage();
usage();
for (i = 0; i < sizeof (buf); i++) {
if (prompt_only) {
buf);
buf);
buf);
buf);
buf);
if (is_async) {
command1);
is_async = 0;