⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 corbaclient.c,v

📁 Perfession Linux Programming examples
💻 C,V
📖 第 1 页 / 共 4 页
字号:
  /* 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 + -