From 037b7b889af53818583a248d497cd2c7309b73f7 Mon Sep 17 00:00:00 2001 From: hadaq Date: Tue, 21 May 2002 12:53:35 +0000 Subject: [PATCH] *** empty log message *** --- allParam/ca/client/caParam.c | 282 +++++++++++++++-------------------- 1 file changed, 117 insertions(+), 165 deletions(-) diff --git a/allParam/ca/client/caParam.c b/allParam/ca/client/caParam.c index 4bb3066..ef5115a 100644 --- a/allParam/ca/client/caParam.c +++ b/allParam/ca/client/caParam.c @@ -57,6 +57,8 @@ typedef struct ParamBlobResultS { int conSetupParam(Param *my, const char *setup) { + int retVal = 0; + int status = ECA_NORMAL; #if ( _POSIX_VERSION < 199506L ) pthread_mutexattr_t *attr; #endif @@ -82,7 +84,12 @@ int conSetupParam(Param *my, const char *setup) ((CaParam *) (my->specParam))->cache = Tcl_CreateInterp(); - return 0; + if((status = ca_task_initialize()) != ECA_NORMAL) { + Param_strerror((Param *) my, ca_message(status)); + retVal = -1; + } + + return retVal; } int conParam(Param *my) @@ -92,6 +99,8 @@ int conParam(Param *my) void desParam(Param *my) { + ca_task_exit(); + Tcl_DeleteInterp(((CaParam *) (my->specParam))->cache); pthread_mutex_destroy(((CaParam *) (my->specParam))->cacheLock); free(((CaParam *) (my->specParam))->cacheLock); @@ -127,11 +136,6 @@ int Param_getIntArray(const Param *my, const char *name, const char *idx, int ma *rows = 0; if(Param_getIntArrayCache(my, name, idx, maxrows, rows, val) || (*rows != maxrows)) { - if((status = ca_task_initialize()) != ECA_NORMAL) { - Param_strerror((Param *) my, ca_message(status)); - retVal = -1; - } - pPVName = malloc((strlen("HAD:PI:") + (my->setup == NULL ? 0 : strlen(my->setup) + 1) + strlen(name) + 1 + strlen(idx) + 1) * sizeof(char)); Param_returnPVName(my, "PI", name, idx, pPVName); @@ -141,28 +145,27 @@ int Param_getIntArray(const Param *my, const char *name, const char *idx, int ma } else if (status != ECA_NORMAL) { Param_strerror((Param *) my, ca_message(status)); retVal = -1; - } - - if((status = ca_pend_io(TIMEOUT)) != ECA_NORMAL) { - Param_strerror((Param *) my, ca_message(status)); - found = 0; - retVal = 0; - } - if(found == 1) { - ParamIntResult resultS, *result = &resultS; - result->val = val; - result->rows = rows; - result->maxrows = maxrows; - result->my = my; - result->retVal = &retVal; - - status = ca_array_get_callback(ca_field_type(chan), ca_element_count(chan), chan, Param_copyIntsToAllocMem, result); - Param_strerror((Param *) my, ca_message(status)); + } else { - if((status = ca_pend_event(TIMEOUT)) == ECA_TIMEOUT) { + if((status = ca_pend_io(TIMEOUT)) != ECA_NORMAL) { Param_strerror((Param *) my, ca_message(status)); - } else if (status != ECA_NORMAL) { + found = 0; + retVal = 0; + } + if(found == 1) { + ParamIntResult resultS, *result = &resultS; + result->val = val; + result->rows = rows; + result->maxrows = maxrows; + result->my = my; + result->retVal = &retVal; + + status = ca_array_get_callback(ca_field_type(chan), ca_element_count(chan), chan, Param_copyIntsToAllocMem, result); Param_strerror((Param *) my, ca_message(status)); + + if((status = ca_pend_event(TIMEOUT)) != ECA_NORMAL) { + Param_strerror((Param *) my, ca_message(status)); + } } } @@ -172,9 +175,6 @@ int Param_getIntArray(const Param *my, const char *name, const char *idx, int ma free(pPVName); - if((status = ca_task_exit()) != ECA_NORMAL) { - Param_strerror((Param *) my, ca_message(status)); - } if(maxrows == 1) { Param_storeIntCache(my, name, idx, *val); } else { @@ -200,11 +200,6 @@ int Param_getStringArray(const Param *my, const char *name, const char *idx, int *rows = 0; if(Param_getStringArrayCache(my, name, idx, maxrows, rows, val) || (*rows != maxrows)) { - if((status = ca_task_initialize()) != ECA_NORMAL) { - Param_strerror((Param *) my, ca_message(status)); - retVal = -1; - } - pPVName = malloc((strlen("HAD:PS:") + (my->setup == NULL ? 0 : strlen(my->setup) + 1) + strlen(name) + 1 + strlen(idx) + 1) * sizeof(char)); Param_returnPVName(my, "PS", name, idx, pPVName); @@ -214,40 +209,36 @@ int Param_getStringArray(const Param *my, const char *name, const char *idx, int } else if (status != ECA_NORMAL) { Param_strerror((Param *) my, ca_message(status)); retVal = -1; - } - - if((status = ca_pend_io(TIMEOUT)) != ECA_NORMAL) { - Param_strerror((Param *) my, ca_message(status)); - found = 0; - retVal = 0; - } - if(found == 1) { - ParamStringResult resultS, *result = &resultS; - result->val = val; - result->rows = rows; - result->maxrows = maxrows; - result->my = my; - result->retVal = &retVal; - - status = ca_array_get_callback(ca_field_type(chan), ca_element_count(chan), chan, Param_copyStringsToAllocMem, result); - Param_strerror((Param *) my, ca_message(status)); + } else { - if((status = ca_pend_event(TIMEOUT)) == ECA_TIMEOUT) { + if((status = ca_pend_io(TIMEOUT)) != ECA_NORMAL) { Param_strerror((Param *) my, ca_message(status)); - } else if (status != ECA_NORMAL) { + found = 0; + retVal = 0; + } + if(found == 1) { + ParamStringResult resultS, *result = &resultS; + result->val = val; + result->rows = rows; + result->maxrows = maxrows; + result->my = my; + result->retVal = &retVal; + + status = ca_array_get_callback(ca_field_type(chan), ca_element_count(chan), chan, Param_copyStringsToAllocMem, result); Param_strerror((Param *) my, ca_message(status)); + + if((status = ca_pend_event(TIMEOUT)) != ECA_NORMAL) { + Param_strerror((Param *) my, ca_message(status)); + } } - } - if((status = ca_clear_channel(chan)) != ECA_NORMAL) { - Param_strerror((Param *) my, ca_message(status)); + if((status = ca_clear_channel(chan)) != ECA_NORMAL) { + Param_strerror((Param *) my, ca_message(status)); + } } free(pPVName); - if((status = ca_task_exit()) != ECA_NORMAL) { - Param_strerror((Param *) my, ca_message(status)); - } if(maxrows == 1) { Param_storeStringCache(my, name, idx, *val); } else { @@ -273,11 +264,6 @@ int Param_getFilenameArray(const Param *my, const char *name, const char *idx, i *rows = 0; if(Param_getFilenameArrayCache(my, name, idx, maxrows, rows, val) || (*rows != maxrows)) { - if((status = ca_task_initialize()) != ECA_NORMAL) { - Param_strerror((Param *) my, ca_message(status)); - retVal = -1; - } - pPVName = malloc((strlen("HAD:PF:") + (my->setup == NULL ? 0 : strlen(my->setup) + 1) + strlen(name) + 1 + strlen(idx) + 1) * sizeof(char)); Param_returnPVName(my, "PF", name, idx, pPVName); @@ -287,28 +273,27 @@ int Param_getFilenameArray(const Param *my, const char *name, const char *idx, i } else if (status != ECA_NORMAL) { Param_strerror((Param *) my, ca_message(status)); retVal = -1; - } - - if((status = ca_pend_io(TIMEOUT)) != ECA_NORMAL) { - Param_strerror((Param *) my, ca_message(status)); - found = 0; - retVal = 0; - } - if(found == 1) { - ParamStringResult resultS, *result = &resultS; - result->val = val; - result->rows = rows; - result->maxrows = maxrows; - result->my = my; - result->retVal = &retVal; - - status = ca_array_get_callback(ca_field_type(chan), ca_element_count(chan), chan, Param_copyStringsToAllocMem, result); - Param_strerror((Param *) my, ca_message(status)); + } else { - if((status = ca_pend_event(TIMEOUT)) == ECA_TIMEOUT) { + if((status = ca_pend_io(TIMEOUT)) != ECA_NORMAL) { Param_strerror((Param *) my, ca_message(status)); - } else if (status != ECA_NORMAL) { + found = 0; + retVal = 0; + } + if(found == 1) { + ParamStringResult resultS, *result = &resultS; + result->val = val; + result->rows = rows; + result->maxrows = maxrows; + result->my = my; + result->retVal = &retVal; + + status = ca_array_get_callback(ca_field_type(chan), ca_element_count(chan), chan, Param_copyStringsToAllocMem, result); Param_strerror((Param *) my, ca_message(status)); + + if((status = ca_pend_event(TIMEOUT)) != ECA_NORMAL) { + Param_strerror((Param *) my, ca_message(status)); + } } } @@ -318,9 +303,6 @@ int Param_getFilenameArray(const Param *my, const char *name, const char *idx, i free(pPVName); - if((status = ca_task_exit()) != ECA_NORMAL) { - Param_strerror((Param *) my, ca_message(status)); - } if(maxrows == 1) { Param_storeStringCache(my, name, idx, *val); } else { @@ -342,11 +324,6 @@ int Param_getBlob(const Param *my, const char *name, const char *idx, size_t *si chid chan; char *pPVName; - if((status = ca_task_initialize()) != ECA_NORMAL) { - Param_strerror((Param *) my, ca_message(status)); - retVal = -1; - } - pPVName = malloc((strlen("HAD:PB:") + (my->setup == NULL ? 0 : strlen(my->setup) + 1) + strlen(name) + 1 + strlen(idx) + 1) * sizeof(char)); Param_returnPVName(my, "PB", name, idx, pPVName); @@ -356,33 +333,32 @@ int Param_getBlob(const Param *my, const char *name, const char *idx, size_t *si } else if (status != ECA_NORMAL) { Param_strerror((Param *) my, ca_message(status)); retVal = -1; - } - - if((status = ca_pend_io(TIMEOUT)) != ECA_NORMAL) { - Param_strerror((Param *) my, ca_message(status)); - found = 0; - retVal = 0; - } - if((*val = tmpfile()) == NULL) { - Param_strerror((Param *) my, strerror(errno)); - found = 0; - retVal = -1; - } + } else { - if(found == 1) { - ParamBlobResult resultS, *result = &resultS; - result->val = val; - result->size = size; - result->my = my; - result->retVal = &retVal; + if((status = ca_pend_io(TIMEOUT)) != ECA_NORMAL) { + Param_strerror((Param *) my, ca_message(status)); + found = 0; + retVal = 0; + } + if((*val = tmpfile()) == NULL) { + Param_strerror((Param *) my, strerror(errno)); + found = 0; + retVal = -1; + } - status = ca_array_get_callback(ca_field_type(chan), ca_element_count(chan), chan, Param_copyBlobToAllocMem, result); - Param_strerror((Param *) my, ca_message(status)); + if(found == 1) { + ParamBlobResult resultS, *result = &resultS; + result->val = val; + result->size = size; + result->my = my; + result->retVal = &retVal; - if((status = ca_pend_event(TIMEOUT)) == ECA_TIMEOUT) { - Param_strerror((Param *) my, ca_message(status)); - } else if (status != ECA_NORMAL) { + status = ca_array_get_callback(ca_field_type(chan), ca_element_count(chan), chan, Param_copyBlobToAllocMem, result); Param_strerror((Param *) my, ca_message(status)); + + if((status = ca_pend_event(TIMEOUT)) != ECA_NORMAL) { + Param_strerror((Param *) my, ca_message(status)); + } } } @@ -392,10 +368,6 @@ int Param_getBlob(const Param *my, const char *name, const char *idx, size_t *si free(pPVName); - if((status = ca_task_exit()) != ECA_NORMAL) { - Param_strerror((Param *) my, ca_message(status)); - } - return retVal; } @@ -407,11 +379,6 @@ int Param_storeInt(const Param *my, const char *name, const char *idx, unsigned chid chan; char *pPVName; - if((status = ca_task_initialize()) != ECA_NORMAL) { - Param_strerror((Param *) my, ca_message(status)); - retVal = -1; - } - pPVName = malloc((strlen("HAD:PI:") + (my->setup == NULL ? 0 : strlen(my->setup) + 1) + strlen(name) + 1 + strlen(idx) + 1) * sizeof(char)); Param_returnPVName(my, "PI", name, idx, pPVName); @@ -421,34 +388,29 @@ int Param_storeInt(const Param *my, const char *name, const char *idx, unsigned } else if (status != ECA_NORMAL) { Param_strerror((Param *) my, ca_message(status)); retVal = -1; - } - - if((status = ca_pend_io(TIMEOUT)) != ECA_NORMAL) { - Param_strerror((Param *) my, ca_message(status)); - found = 0; - retVal = 0; - } - if(found == 1) { - status = ca_put(DBR_LONG, chan, &value); - Param_strerror((Param *) my, ca_message(status)); + } else { - if((status = ca_pend_event(TIMEOUT)) == ECA_TIMEOUT) { + if((status = ca_pend_io(TIMEOUT)) != ECA_NORMAL) { Param_strerror((Param *) my, ca_message(status)); - } else if (status != ECA_NORMAL) { + found = 0; + retVal = 0; + } + if(found == 1) { + status = ca_put(DBR_LONG, chan, &value); Param_strerror((Param *) my, ca_message(status)); + + if((status = ca_pend_event(TIMEOUT)) != ECA_NORMAL) { + Param_strerror((Param *) my, ca_message(status)); + } } - } - if((status = ca_clear_channel(chan)) != ECA_NORMAL) { - Param_strerror((Param *) my, ca_message(status)); + if((status = ca_clear_channel(chan)) != ECA_NORMAL) { + Param_strerror((Param *) my, ca_message(status)); + } } free(pPVName); - if((status = ca_task_exit()) != ECA_NORMAL) { - Param_strerror((Param *) my, ca_message(status)); - } - return retVal; } @@ -460,11 +422,6 @@ int Param_storeString(const Param *my, const char *name, const char *idx, const chid chan; char *pPVName; - if((status = ca_task_initialize()) != ECA_NORMAL) { - Param_strerror((Param *) my, ca_message(status)); - retVal = -1; - } - pPVName = malloc((strlen("HAD:PS:") + (my->setup == NULL ? 0 : strlen(my->setup) + 1) + strlen(name) + 1 + strlen(idx) + 1) * sizeof(char)); Param_returnPVName(my, "PS", name, idx, pPVName); @@ -474,34 +431,29 @@ int Param_storeString(const Param *my, const char *name, const char *idx, const } else if (status != ECA_NORMAL) { Param_strerror((Param *) my, ca_message(status)); retVal = -1; - } - - if((status = ca_pend_io(TIMEOUT)) != ECA_NORMAL) { - Param_strerror((Param *) my, ca_message(status)); - found = 0; - retVal = 0; - } - if(found == 1) { - status = ca_put(DBR_STRING, chan, value); - Param_strerror((Param *) my, ca_message(status)); + } else { - if((status = ca_pend_event(TIMEOUT)) == ECA_TIMEOUT) { + if((status = ca_pend_io(TIMEOUT)) != ECA_NORMAL) { Param_strerror((Param *) my, ca_message(status)); - } else if (status != ECA_NORMAL) { + found = 0; + retVal = 0; + } + if(found == 1) { + status = ca_put(DBR_STRING, chan, value); Param_strerror((Param *) my, ca_message(status)); + + if((status = ca_pend_event(TIMEOUT)) != ECA_NORMAL) { + Param_strerror((Param *) my, ca_message(status)); + } } - } - if((status = ca_clear_channel(chan)) != ECA_NORMAL) { - Param_strerror((Param *) my, ca_message(status)); + if((status = ca_clear_channel(chan)) != ECA_NORMAL) { + Param_strerror((Param *) my, ca_message(status)); + } } free(pPVName); - if((status = ca_task_exit()) != ECA_NORMAL) { - Param_strerror((Param *) my, ca_message(status)); - } - return retVal; } -- 2.43.0