📄 corbaclient.c,v
字号:
/* printf("Allocated memory...\n"); */
if (results == NULL) {
return DVD_ERR_NO_MEMORY;
}
/* printf("Search results: "); */
for (i = 0; i < CList->_length; i++) {
/* printf(" %d %d ", i, CList->_buffer[i]); */
results[i] = CList->_buffer[i];
}
CList->_release = TRUE;
*result_ids = results;
*count = CList->_length;
CORBA_free(CList);
return DVD_SUCCESS;
}
int dvd_disk_set(dvd_disk *diskin)
{
DVD_DISKS_dvddisks *cout;
/* printf("Set: dvd_disk_set\n"); */
if(diskin == NULL)
return DVD_ERR_NULL_POINTER;
else {
cout= DVD_DISKS_dvddisks__alloc();
cout->diskid = diskin->disk_id;
cout->titleid = diskin->title_id;
DVD_DISKS_set(disks, cout, &ev);
if (ev._major != CORBA_NO_EXCEPTION) {
printf("Got CORBA exception %d/%s\n", ev._major,
CORBA_exception_id(&ev));
return DVD_SUCCESS;
}
}
return DVD_SUCCESS;
}
int dvd_disk_get(int disk_id, dvd_disk *diskout)
{
DVD_DISKS_dvddisks cdisk;
int rc=0;
if(diskout == NULL) {
return DVD_ERR_NULL_POINTER;
} else {
DVD_DISKS_get (disks, disk_id, &cdisk, &ev);
/* printf ("Got DISK\n"); */
}
switch (ev._major) {
case CORBA_NO_EXCEPTION:
rc=0;
break;
case CORBA_SYSTEM_EXCEPTION:
printf("Got CORBA exception %d/%d from DVD_DISKS_get", ev._major,
(int) CORBA_exception_value(&ev));
rc= DVD_ERR_NOT_FOUND;
case CORBA_USER_EXCEPTION:
printf("Error: %s\n", CORBA_exception_id(&ev));
rc = DVD_ERR_NOT_FOUND;
}
if (rc != 0) { /* If we had an exception above... */
return rc;
}
/* If the retrieved member id is not as expected there
may be an error, or the member may be deleted */
if(disk_id != cdisk.diskid)
return (int) DVD_ERR_NOT_FOUND;
diskout->disk_id = cdisk.diskid;
diskout->title_id = cdisk.titleid;
/* printf("Disk: %d %d", diskout->disk_id, diskout->title_id); */
return DVD_SUCCESS;
}
int dvd_disk_create(dvd_disk *newdisk, int *disk_id)
{
DVD_DISKS_dvddisks *cout;
DVD_DISKS_dvdidt cdiskid;
/* printf("dvd_disk_create\n"); */
if(newdisk == NULL)
return DVD_ERR_NULL_POINTER;
else {
cout= DVD_DISKS_dvddisks__alloc();
cout->diskid = newdisk->disk_id;
cout->titleid = newdisk->title_id;
}
/* Add the new member to the member and reservations file */
DVD_DISKS_create(disks, cout, &cdiskid, &ev);
if (ev._major != CORBA_NO_EXCEPTION) {
printf("Got CORBA exception %d/%s\n", ev._major,
CORBA_exception_id(&ev));
CORBA_exception_free(&ev);
return DVD_SUCCESS;
}
*disk_id = cdiskid;
CORBA_free(cout);
return DVD_SUCCESS;
}
int dvd_disk_delete(int disk_id)
{
DVD_DISKS_dvdidt c;
int rc=0;
/* printf("dvd_disk_delete %d\n", disk_id); */
c = disk_id;
DVD_DISKS_delete(disks, c, &ev);
/* Note that we've got about 4 lines of declarations and other "real
code," and about 12 lines of "exception handling." THIS is why
exception handling in C is ugly */
switch (ev._major) {
case CORBA_NO_EXCEPTION:
rc = DVD_SUCCESS;
break;
case CORBA_SYSTEM_EXCEPTION:
printf("Got CORBA exception %d/%d from DVD_DISKS_delete", ev._major,
(int) CORBA_exception_value(&ev));
rc = DVD_ERR_NOT_FOUND;
break;
case CORBA_USER_EXCEPTION:
printf("Error: %s\n", CORBA_exception_id(&ev));
rc = DVD_ERR_NOT_FOUND;
}
CORBA_exception_free(&ev);
return rc;
}
int dvd_disk_search(int title_id, int *result_ids[], int *count)
{
DVD_DISKS_dvdList *CList;
int *results = NULL, i;
DVD_DISKS_search(disks, title_id, &CList, &ev);
/* printf("Found... %d\n", CList->_length); */
if (ev._major != CORBA_NO_EXCEPTION) {
printf("Got CORBA exception %d/%s\n", ev._major,
CORBA_exception_id(&ev));
CORBA_exception_free(&ev);
return DVD_ERR_NOT_FOUND;
}
CORBA_exception_free(&ev);
/* printf("No exception... Got some results... Count: %d\n", CList->_length); */
/* Alternatively, there _were_ good results in CList->.. */
results=calloc(CList->_length, sizeof(int));
/* printf("Allocated memory...\n"); */
if (results == NULL) {
return DVD_ERR_NO_MEMORY;
}
/* printf("Search results: "); */
for (i = 0; i < CList->_length; i++) {
/* printf(" %d %d ", i, CList->_buffer[i]); */
results[i] = CList->_buffer[i];
}
CList->_release = TRUE;
*result_ids = results;
*count = CList->_length;
CORBA_free(CList);
return DVD_SUCCESS;
}
int dvd_rent_title(int member_id, int title_id, int *disk_id_to_rent)
{
int rc=0;
DVD_DISKS_dvdidt diskid;
DVD_RENTAL_renttitle(rental, member_id, title_id, &diskid, &ev);
switch (ev._major) {
case CORBA_NO_EXCEPTION:
rc = 0;
break;
case CORBA_SYSTEM_EXCEPTION:
printf("Got CORBA exception %d/%d from DVD_DISKS_delete",
ev._major, (int) CORBA_exception_value(&ev));
rc = DVD_ERR_NOT_FOUND;
break;
case CORBA_USER_EXCEPTION:
/* We could check for a number of different exceptions, but
frankly, since all we return with is DVD_ERR_NOT_FOUND, there's
not much point to checking... */
printf("Error: %s\n", CORBA_exception_id(&ev));
rc = DVD_ERR_NOT_FOUND;
}
CORBA_exception_free(&ev);
if (rc != 0)
return rc;
*disk_id_to_rent = diskid;
return DVD_SUCCESS;
}
int dvd_rented_disk_info(int disk_id, int *member_id, char *date_rented)
{
DVD_MEMBERSHIP_memberidt memberid;
DVD_datec daterented;
int rc=0;
DVD_RENTAL_rentdiskinfo(rental, disk_id, &memberid, &daterented,
&ev);
switch (ev._major) {
case CORBA_NO_EXCEPTION:
rc = 0;
*member_id = memberid;
strcpy(date_rented, daterented);
CORBA_free(daterented);
break;
case CORBA_SYSTEM_EXCEPTION:
printf("Got CORBA exception %d/%d from DVD_RENTAL_rentdiskinfo",
ev._major, (int) CORBA_exception_value(&ev));
rc = DVD_ERR_NOT_FOUND;
break;
case CORBA_USER_EXCEPTION:
printf("Error: %s\n", CORBA_exception_id(&ev));
rc = DVD_ERR_NOT_FOUND;
}
CORBA_exception_free(&ev);
if (rc != 0)
return rc;
return DVD_SUCCESS;
}
int dvd_disk_return(int disk_id, int *member_id, char *date)
{
int rc = 0;
DVD_MEMBERSHIP_memberidt memberid;
if(date == NULL)
return DVD_ERR_NULL_POINTER;
DVD_RENTAL_diskreturn(rental, disk_id, date, &memberid, &ev);
switch (ev._major) {
case CORBA_NO_EXCEPTION:
rc = 0;
*member_id = memberid;
break;
case CORBA_SYSTEM_EXCEPTION:
printf("Got CORBA exception %d/%d from DVD_RENTAL_rentdiskinfo",
ev._major, (int) CORBA_exception_value(&ev));
rc = DVD_ERR_NOT_FOUND;
break;
case CORBA_USER_EXCEPTION:
printf("Error: %s\n", CORBA_exception_id(&ev));
rc = DVD_ERR_NOT_FOUND;
}
CORBA_exception_free(&ev);
if (rc != 0)
return rc;
return DVD_SUCCESS;
}
int dvd_reserve_title(char *date, int title_id, int member_id)
{
int rc=0;
if (date == NULL)
return DVD_ERR_NULL_POINTER;
DVD_RESERVATIONS_reservetitle(reservations, date, title_id,
member_id, &ev);
switch (ev._major) {
case CORBA_NO_EXCEPTION:
rc = 0;
break;
case CORBA_SYSTEM_EXCEPTION:
printf("Got CORBA exception %d/%d from DVD_RESERVATIONS_reservetitle",
ev._major, (int) CORBA_exception_value(&ev));
rc = DVD_ERR_NOT_FOUND;
break;
case CORBA_USER_EXCEPTION:
printf("Error: %s\n", CORBA_exception_id(&ev));
rc = DVD_ERR_NOT_FOUND; /* No more intelligent response than this... */
}
CORBA_exception_free(&ev);
if (rc != 0)
return rc;
return DVD_SUCCESS;
}
int dvd_reserve_title_cancel(int member_id)
{
int rc = 0;
DVD_RESERVATIONS_cancelreservation(reservations, member_id, &ev);
switch (ev._major) {
case CORBA_NO_EXCEPTION:
rc = 0;
break;
case CORBA_SYSTEM_EXCEPTION:
printf("Got CORBA exception %d/%d from DVD_RESERVATIONS_cancelreservation",
ev._major, (int) CORBA_exception_value(&ev));
rc = DVD_ERR_NOT_FOUND;
break;
case CORBA_USER_EXCEPTION:
printf("Error: %s\n", CORBA_exception_id(&ev));
rc = DVD_ERR_NOT_FOUND; /* No more intelligent response than this... */
}
CORBA_exception_free(&ev);
if (rc != 0)
return rc;
return DVD_SUCCESS;
}
int dvd_reserve_title_query_by_member(int member_id, int *title_id)
{
int rc=0;
DVD_TITLING_titlet titleid;
DVD_RESERVATIONS_queryreservationbymember (reservations, member_id,
&titleid, &ev);
switch (ev._major) {
case CORBA_NO_EXCEPTION:
rc = 0;
*title_id = titleid;
return DVD_SUCCESS;
case CORBA_SYSTEM_EXCEPTION:
printf("Got CORBA exception %d/%d from DVD_RESERVATIONS_queryreservationbymember",
ev._major, (int) CORBA_exception_value(&ev));
rc = DVD_ERR_NOT_FOUND;
break;
case CORBA_USER_EXCEPTION:
printf("Error: %s\n", CORBA_exception_id(&ev));
rc = DVD_ERR_NOT_FOUND; /* No more intelligent response than this... */
}
CORBA_exception_free(&ev);
if (rc != 0)
return rc;
return DVD_SUCCESS;
}
int dvd_reserve_title_query_by_titledate(int title_id, char *date, int
*member_ids[])
{
/* Return a list of members who have reserved this title on this date */
/* Not yet implemented... */
return DVD_ERR_NOT_FOUND;
}
int dvd_overdue_disks(char *date1, char *date2, int *disk_ids[], int *count)
{
/* Not yet implemented ... */
return DVD_ERR_NOT_FOUND;
}
int dvd_get_genre_list(char **genre_list[], int *count)
{
DVD_TITLING_genreList *cgenrelist;
cgenrelist = DVD_TITLING_genreList__alloc();
DVD_UTILITIES_getgenres (utilities, &cgenrelist, &ev);
if (ev._major != CORBA_NO_EXCEPTION) {
printf("Got CORBA exception %d/%s\n", ev._major,
CORBA_exception_id(&ev));
return DVD_SUCCESS;
}
*genre_list = cgenrelist->_buffer;
*count = cgenrelist->_length;
return DVD_SUCCESS;
}
int dvd_get_classification_list(char **class_list[], int *count)
{
int i;
DVD_TITLING_classList *cclasslist;
DVD_UTILITIES_getclassifications (utilities, &cclasslist, &ev);
if (ev._major != CORBA_NO_EXCEPTION) {
printf("Got CORBA exception %d/%s\n", ev._major,
CORBA_exception_id(&ev));
return DVD_SUCCESS;
}
/* printf ("dvd_get_classification_list...\n");
for (i = 0; i < cclasslist->_length; i++) {
printf ("Item %d: %s\n", i, cclasslist->_buffer[i]);
} */
*class_list = cclasslist->_buffer;
*count = cclasslist->_length;
return DVD_SUCCESS;
}
int dvd_err_text(int err_number, char **message_to_show)
{
static char default_msg[80];
CORBA_char *errmsg;
/* printf("Getting error for [%d]\n", err_number); */
DVD_UTILITIES_errortext(utilities, err_number, &errmsg, &ev);
if (ev._major != CORBA_NO_EXCEPTION) {
printf("Got CORBA exception %d/%s\n", ev._major,
CORBA_exception_id(&ev));
return DVD_SUCCESS;
}
strcpy(default_msg, errmsg);
*message_to_show = default_msg;
return DVD_SUCCESS;
}
int dvd_today(char **date)
{
static char today[9];
DVD_datec c_today;
DVD_UTILITIES_today(utilities, &c_today, &ev);
if (ev._major != CORBA_NO_EXCEPTION) {
printf("Got CORBA exception %d/%s\n", ev._major,
CORBA_exception_id(&ev));
return DVD_SUCCESS;
}
strcpy (today, c_today);
*date = today;
return DVD_SUCCESS;
}
static void open_factory_error (CORBA_Object interface, char *interfacename) {
if (!interface) {
printf ("Could not bind factory for interface %s", interfacename);
}
}
int dvd_open_db()
{
/* printf("Open DB...\n"); */
return Build_Factories();
}
int dvd_close_db(void)
{
return 0;
}
@
1.6
log
@Cleaned up all warnings.
@
text
@d69 1
a69 1
printf("Opening Factories...");
d73 2
a74 2
printf("Got CORBA exception %d/%s\n", ev._major,
CORBA_exception_id(&ev));
d80 2
a81 2
printf("Got CORBA exception %d/%s\n", ev._major,
CORBA_exception_id(&ev));
d124 1
a124 1
printf("Set: dvd_store_member\n");
d192 1
a192 1
printf("Member: %d %s %s %s %s", member->member_id,
d194 1
a194 1
member->zipcode);
d209 1
a209 1
printf("dvd_member_create\n");
d243 1
a243 1
printf("dvd_member_delete %d\n", member_id);
d269 1
a269 1
printf("dvd_member_get_id_from_number %s\n", member_no);
d275 1
a275 1
printf("result: %d\n", cmemberid);
d306 1
a306 1
printf("Found... %d\n", CList->_length);
d313 1
a313 1
printf("No exception... Got some results... Count: %d\n", CList->_length);
d319 1
a319 1
printf("Allocated memory...\n");
d323 1
a323 1
printf("Search results: ");
d325 1
a325 1
printf(" %d %d ", i, CList->_buffer[i]);
d409 1
a409 1
printf("Title: %d %s %s %s %s\n", ttlneeded->title_id,
d411 1
a411 1
ttlneeded->genre, ttlneeded->classification);
d449 1
a449 1
printf("dvd_titling_delete %d\n", title_id);
d477 1
a477 1
printf("Found... %d\n", CList->_length);
d484 1
a484 1
printf("No exception... Got some results... Count: %d\n", CList->_length);
d487 1
a487 1
printf("Allocated memory...\n");
d491 1
a491 1
printf("Search results: ");
d493 1
a493 1
printf(" %d %d ", i, CList->_buffer[i]);
d506 1
a506 1
printf("Set: dvd_disk_set\n");
d531 1
a531 1
printf ("Got DISK\n");
d554 1
a554 1
printf("Disk: %d %d", diskout->disk_id, diskout->title_id);
d562 1
a562 1
printf("dvd_disk_create\n");
d587 1
a587 1
printf("dvd_disk_delete %d\n", disk_id);
d615 1
a615 1
printf("Found... %d\n", CList->_length);
d623 1
a623 1
printf("No exception... Got some results... Count: %d\n", CList->_length);
d626 1
a626 1
printf("Allocated memory...\n");
d630 1
a630 1
printf("Search results: ");
d632 1
a632 1
printf(" %d %d ", i, CList->_buffer[i]);
d840 4
a843 4
printf ("dvd_get_classification_list...\n");
for (i = 0; i < cclasslist->_length; i++) {
printf ("Item %d: %s\n", i, cclasslist->_buffer[i]);
}
d853 1
a853 1
printf("Getting error for [%d]\n", err_number);
d887 1
a887 1
printf("Open DB...\n");
a888 1
@
1.5
log
@Working _fairly_ well...
@
text
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -