Использование rpcgen с C ++

0

Я использую библиотеки rpcgen для создания приложения, где мне нужно использовать хэш-карту на стороне сервера. Целесообразно ли использовать библиотеки STL (или любой [код CN10]) с rpcgen? Я попытался скомпилировать файлы с помощью g++, и он работает. Или мне лучше реализовать что-то вроде связанного списка вместо хэш-карты (я предполагаю, что сложность не проблема), придерживаясь C?

Что-то вроде этого: мой входной файл

struct intpair {
        int a;
        int b;
};

program ADD_PROG {
        version ADD_VERS {
                int ADD(intpair) = 1;
        } = 1;
} = 0x23451111;

(от http://www.cs.rutgers.edu/~pxk/rutgers/notes/rpc/index.html).

Я хочу использовать hashmap на стороне сервера. Я попытался сделать что-то подобное в файле на стороне сервера:

#include "add.h"
#include <map>
#include <string>

int *
add_1_svc(intpair *argp, struct svc_req *rqstp)
{
    std::map<std::string, int> voteList;

    static int result;
    std::string s = "Aa";

    voteList.insert(std::pair<std::string, int> ("ABC", 100));
    printf("Add called\n");

    return &result;
}

и это работает. Мне пришлось переименовать файлы и использовать g++.

  • 0
    Можете ли вы показать нам пример небольшого входного файла для rpcgen, который показывает, что вы имеете в виду?
  • 0
    Добавил пример. Мне нужно реализовать структуру данных для представления базы данных, но я не уверен, что использование sth hashmap является хорошей практикой здесь.
Теги:

1 ответ

1
Лучший ответ

Похоже, что компоненты C++ STL не "течет" через интерфейс, который вы реализуете, поэтому все должно быть хорошо и хорошо. Одна вещь, о которой нужно знать, это безопасность исключений: вы можете добавить блок try/catch верхнего уровня для преобразования любых исключений в соответствующую ошибку.

  • 0
    Можете ли вы объяснить, как компоненты могут протечь? Это первый раз, когда я пытаюсь это сделать, поэтому я не знаю много о потенциальных подводных камнях.
  • 0
    Я имею в виду, что вы не пытаетесь отправлять или получать классы C ++ через интерфейс RPC - вы просто используете классы C ++ внутри реализации. Первое, вероятно, было бы ошибкой; последний должен работать, если вы осторожны с исключениями.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню