From 5f743e6b18587c2daae4fe9cee8cf991b7352d24 Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Thu, 4 Nov 1999 14:58:44 +0000 Subject: [PATCH] Added status elements for backend delete result set handler. Updated delete result result set command for client. --- client/client.c | 58 ++++++++++++++++++++++++++++++++++++++++------------- include/backend.h | 9 +++++++-- server/seshigh.c | 37 ++++++++++++++++++++++++++++++++-- 3 files changed, 86 insertions(+), 18 deletions(-) diff --git a/client/client.c b/client/client.c index 9002987..f04179b 100644 --- a/client/client.c +++ b/client/client.c @@ -4,7 +4,11 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: client.c,v $ - * Revision 1.88 1999-10-11 10:00:29 adam + * Revision 1.89 1999-11-04 14:58:44 adam + * Added status elements for backend delete result set handler. + * Updated delete result result set command for client. + * + * Revision 1.88 1999/10/11 10:00:29 adam * Modified printing of records. * * Revision 1.87 1999/08/27 09:40:32 adam @@ -852,18 +856,35 @@ static void display_records(Z_Records *p) static int send_deleteResultSetRequest(char *arg) { + char names[8][32]; + int i; + Z_APDU *apdu = zget_APDU(out, Z_APDU_deleteResultSetRequest); Z_DeleteResultSetRequest *req = apdu->u.deleteResultSetRequest; req->referenceId = set_refid (out); - req->num_resultSetList = 1; - req->resultSetList = (char **) - odr_malloc (out, sizeof(*req->resultSetList)); - *req->resultSetList = arg; + req->num_resultSetList = + sscanf (arg, "%30s %30s %30s %30s %30s %30s %30s %30s", + names[0], names[1], names[2], names[3], + names[4], names[5], names[6], names[7]); + req->deleteFunction = (int *) odr_malloc (out, sizeof(*req->deleteFunction)); - *req->deleteFunction = Z_DeleteRequest_list; + if (req->num_resultSetList > 0) + { + *req->deleteFunction = Z_DeleteRequest_list; + req->resultSetList = (char **) + odr_malloc (out, sizeof(*req->resultSetList)* + req->num_resultSetList); + for (i = 0; inum_resultSetList; i++) + req->resultSetList[i] = names[i]; + } + else + { + *req->deleteFunction = Z_DeleteRequest_all; + req->resultSetList = 0; + } send_apdu(apdu); printf("Sent deleteResultSetRequest.\n"); @@ -1337,11 +1358,6 @@ static int cmd_find(char *arg) static int cmd_delete(char *arg) { - if (!*arg) - { - printf("Delete what?\n"); - return 0; - } if (!conn) { printf("Not connected yet\n"); @@ -1807,6 +1823,21 @@ void process_sortResponse(Z_SortResponse *res) #endif } +void process_deleteResultSetResponse (Z_DeleteResultSetResponse *res) +{ + printf("Got deleteResultSetResponse status=%d\n", + *res->deleteOperationStatus); + if (res->deleteListStatuses) + { + int i; + for (i = 0; i < res->deleteListStatuses->num; i++) + { + printf ("%s status=%d\n", res->deleteListStatuses->elements[i]->id, + *res->deleteListStatuses->elements[i]->status); + } + } +} + int cmd_sort_generic(char *arg, int newset) { if (!conn) @@ -2192,9 +2223,8 @@ static int client(int wait) (apdu->u.resourceControlRequest); break; case Z_APDU_deleteResultSetResponse: - printf("Got deleteResultSetResponse status=%d\n", - *apdu->u.deleteResultSetResponse-> - deleteOperationStatus); + process_deleteResultSetResponse(apdu->u. + deleteResultSetResponse); break; default: printf("Received unknown APDU type (%d).\n", diff --git a/include/backend.h b/include/backend.h index 278978b..32f87a8 100644 --- a/include/backend.h +++ b/include/backend.h @@ -24,7 +24,11 @@ * OF THIS SOFTWARE. * * $Log: backend.h,v $ - * Revision 1.27 1999-10-11 10:01:24 adam + * Revision 1.28 1999-11-04 14:58:44 adam + * Added status elements for backend delete result set handler. + * Updated delete result result set command for client. + * + * Revision 1.27 1999/10/11 10:01:24 adam * Implemented bend_sort_rr handler for frontend server. * * Revision 1.26 1999/06/17 10:54:44 adam @@ -226,7 +230,8 @@ typedef struct bend_delete_rr { int num_setnames; char **setnames; Z_ReferenceId *referenceId; - int delete_status; + int delete_status; /* status for the whole operation */ + int *statuses; /* status each set - indexed as setnames */ ODR stream; } bend_delete_rr; diff --git a/server/seshigh.c b/server/seshigh.c index 2e32af2..39f6d3f 100644 --- a/server/seshigh.c +++ b/server/seshigh.c @@ -4,7 +4,11 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: seshigh.c,v $ - * Revision 1.95 1999-10-11 10:01:24 adam + * Revision 1.96 1999-11-04 14:58:44 adam + * Added status elements for backend delete result set handler. + * Updated delete result result set command for client. + * + * Revision 1.95 1999/10/11 10:01:24 adam * Implemented bend_sort_rr handler for frontend server. * * Revision 1.94 1999/08/27 09:40:32 adam @@ -1706,7 +1710,15 @@ static Z_APDU *process_deleteRequest(association *assoc, request *reqb, bdrr->stream = assoc->encode; bdrr->function = *req->deleteFunction; bdrr->referenceId = req->referenceId; - + bdrr->statuses = 0; + if (bdrr->num_setnames > 0) + { + int i; + bdrr->statuses = odr_malloc(assoc->encode, sizeof(*bdrr->statuses) * + bdrr->num_setnames); + for (i = 0; i < bdrr->num_setnames; i++) + bdrr->statuses[i] = 0; + } ((int (*)(void *, bend_delete_rr *)) (*assoc->bend_delete))(assoc->backend, bdrr); @@ -1717,6 +1729,27 @@ static Z_APDU *process_deleteRequest(association *assoc, request *reqb, *res->deleteOperationStatus = bdrr->delete_status; res->deleteListStatuses = 0; + if (bdrr->num_setnames > 0) + { + int i; + res->deleteListStatuses = odr_malloc(assoc->encode, + sizeof(*res->deleteListStatuses)); + res->deleteListStatuses->num = bdrr->num_setnames; + res->deleteListStatuses->elements = + odr_malloc (assoc->encode, + sizeof(*res->deleteListStatuses->elements) * + bdrr->num_setnames); + for (i = 0; inum_setnames; i++) + { + res->deleteListStatuses->elements[i] = + odr_malloc (assoc->encode, + sizeof(**res->deleteListStatuses->elements)); + res->deleteListStatuses->elements[i]->status = bdrr->statuses+i; + res->deleteListStatuses->elements[i]->id = + odr_strdup (assoc->encode, bdrr->setnames[i]); + + } + } res->numberNotDeleted = 0; res->bulkStatuses = 0; res->deleteMessage = 0; -- 1.7.10.4