Основы программирования в Linux
Шрифт:
}
return(ret_val);
}
5. Далее приведен исходный текст функции
read_one_response
, которая используется для устранения дублирующегося программного кода.
static int read_one_response(message_db_t *rec_ptr) {
int return_code = 0;
if (!rec_ptr) return(0);
if (start_resp_from_server) {
if (read_resp_from_server(rec_ptr)) {
return_code = 1;
}
end_resp_from_server;
}
return(return_code);
}
6. Остальные подпрограммы
get_xxx
, del_xxx
и add_xxx
реализованы аналогично функции get_cdc_entry
и приводятся здесь для полноты картины. Сначала функция для извлечения дорожек компакт-диска.
cdt_entry get_cdt_entry(const char *cd_catalog_ptr,
const int track no) {
cdt_entry ret_val;
message_db_t mess_send;
message_db_t mess_ret;
ret_val.catalog[0] = '\0';
mess_send.client_pid = mypid; mess_send.request = s_get_cdt_entry;
strcpy(mess_send.cdt_entry_data.catalog, cd_catalog_ptr);
mess_send.cdt_entry_data.track_no = track_no;
if (send_mess_to_server(mess_send)) {
if (read_one_response(&mess_ret)) {
if (mess_ret.response == r_success) {
ret_val = mess_ret.cdt_entry_data;
} else {
fprintf(stderr, "%s", mess_ret.error_text);
}
} else {
fprintf(stderr, "Server failed to respond\n");
}
} else {
fprintf(stderr, "Server not accepting requests\n");
}
return(ret_val);
}
7. Далее две функции для вставки данных, первая для добавления элемента каталога, а вторая — дорожек в базу данных.
int add_cdc_entry(const cdc_entry entry_to_add) {
message_db_t mess_send;
message_db_t mess_ret;
mess_send.client_pid = mypid;
mess_send.request = s_add_cdc_entry;
mess_send.cdc_entry_data = entry_to_add;
if (send_mess_to_server(mess_send)) {
if (read_one_response(&mess_ret)) {
if (mess_ret.response == r_success) {
return(1);
} else {
fprintf(stderr, "%s", mess_ret.error_text);
}
} else {
fprintf(stderr, "Server failed to respond\n");
}
} else {
fprintf(stderr, "Server not accepting requests\n");
}
return(0);
}
int add_cdt_entry(const cdt_entry entry_to_add) {
message_db_t mess_send;
message_db_t mess_ret;
mess_send.client_pid = mypid;
mess_send.request = s_add_cdt_entry;
mess send.cdt_entry data = entry_to_add;
if (send_mess_to_server(mess_send)) {
if (read_one_response(&mess_ret)) {
if (mess_ret.response == r_success) {
return(1);
} else {
fprintf(stderr, "%s", mess_ret.error_text);
}
} else {
fprintf(stderr, "Server failed to respond\n");
}
} else {
fprintf(stderr, "Server not accepting requests\n");
}
return(0);
}
8. В заключение две функции для удаления данных.
int del_cdc_entry(const char *cd_catalog_ptr) {
message_db_t mess_send;
message_db_t mess_ret;
mess_send.client_pid = mypid;
mess_send.request = s_del_cdc_entry;
strcpy(mess_send.cdc_entry_data.catalog, cd_catalog_ptr);
if (send_mess_to_server(mess_send)) {
if (read_one_response(&mess_ret)) {
if (mess_ret.response == r_success) {
return(1);
} else {
fprintf(stderr, "%s", mess_ret.error_text);
}
} else {
fprintf(stderr, "Server failed to respond\n");
}
} else {
Поделиться:
Популярные книги
Аврора Горелика (сборник)
Поэзия:
драматургия
6.25
рейтинг книги
12 великих комедий
Вожди Советского Союза
Проза:
классическая проза
6.25
рейтинг книги
Газлайтер. Том 21
21. История Телепата
Фантастика:
боевая фантастика
аниме
попаданцы
5.25
рейтинг книги
Маркс и Энгельс
421. Жизнь замечательных людей
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Охотник за головами
1. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Последний Паладин. Том 3
3. Путь Паладина
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Воин
2. Совсем не герой
Фантастика:
фэнтези
попаданцы
9.25
рейтинг книги
Лунный бассейн. Металлическое чудовище (сборник)
2. Абрахам Меррит. Собрание сочинений в 5 томах
Фантастика:
ужасы и мистика
5.00
рейтинг книги
С чего все началось?
Любовные романы:
современные любовные романы
3.40
рейтинг книги
Дважды одарённый. Том IX
9. Дважды одаренный
Фантастика:
альтернативная история
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Отряд
Отряд тайных дел
Фантастика:
фэнтези
боевая фантастика
6.25
рейтинг книги
Шайтан Иван 5
5. Шайтан Иван
Фантастика:
попаданцы
альтернативная история
историческое фэнтези
5.50
рейтинг книги
Америго Веспуччи. Фернан Магеллан
Проза:
историческая проза
5.00
рейтинг книги
Неучтенный элемент. Том 7
7. Антимаг. Вне системы
Фантастика:
фэнтези
5.00