Чтение онлайн

на главную - закладки

Жанры

Основы программирования в 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 {

Поделиться:
Популярные книги

Мастер порталов

Лисина Александра
8. Гибрид
Фантастика:
боевая фантастика
попаданцы
технофэнтези
аниме
фэнтези
5.00
рейтинг книги
Мастер порталов

Газлайтер. Том 21

Володин Григорий Григорьевич
21. История Телепата
Фантастика:
боевая фантастика
аниме
попаданцы
5.00
рейтинг книги
Газлайтер. Том 21

Я не царь. Книга XXIV

Дрейк Сириус
24. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я не царь. Книга XXIV

Наследник

Назимов Константин Геннадьевич
3. Травник
Фантастика:
фэнтези
6.80
рейтинг книги
Наследник

Кодекс Охотника. Книга XVIII

Винокуров Юрий
18. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XVIII

Барон запрещает правила

Ренгач Евгений
9. Закон сильного
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Барон запрещает правила

Искатель 6

Шиленко Сергей
6. Валинор
Фантастика:
рпг
фэнтези
попаданцы
гаремник
5.00
рейтинг книги
Искатель 6

Мечников. Луч надежды

Алмазов Игорь
8. Жизнь Лекаря с нуля
Фантастика:
альтернативная история
аниме
фэнтези
5.00
рейтинг книги
Мечников. Луч надежды

Родословная. Том 2

Ткачев Андрей Юрьевич
2. Линия крови
Фантастика:
городское фэнтези
аниме
фэнтези
5.00
рейтинг книги
Родословная. Том 2

Хозяин Теней 2

Петров Максим Николаевич
2. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней 2

Мастер 9

Чащин Валерий
9. Мастер
Фантастика:
боевая фантастика
попаданцы
технофэнтези
аниме
фэнтези
5.00
рейтинг книги
Мастер 9

Воронцов. Перезагрузка. Книга 5

Тарасов Ник
5. Воронцов. Перезагрузка
Фантастика:
попаданцы
альтернативная история
фэнтези
фантастика: прочее
6.00
рейтинг книги
Воронцов. Перезагрузка. Книга 5

За Горизонтом

Вайс Александр
8. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
космоопера
5.00
рейтинг книги
За Горизонтом

Петля, Кадетский Корпус. Книга четвертая

Алексеев Евгений Артемович
4. Петля
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Петля, Кадетский Корпус. Книга четвертая