J'essaye d'écrire un module de bibliothèque qui appelle des opérations boost :: asio. Ce module serait utilisé par une couche logique d'application pour un traitement ultérieur, en fonction des résultats.boost :: bind comment définir une fonction qui prend un callback comme argument
Mon exigence est simple et simple. Tout ce dont j'ai besoin est de pouvoir spécifier un callback fn dans ma classe Util ci-dessous, qui peut prendre n'importe quelle fonction ptr, ou boost :: bind (member fn), ou autre, et invoquer ce callback, une fois le code async terminé .
class Util {
public:
void sendMsg(const Msg& m, <some callback fn here...>) {
// Make a call to boost::asio approximately as below..
boost::asio::async_write(socket_, boost::asio::buffer(message_),
boost::bind(&tcp_connection::handle_write, shared_from_this(),
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred));
// Here, I want to pass the "<some callback fn here>" to async_write,
// instead of calling boost::bind here. How to do that?
}
};
Alors, ma question est .. À quoi devrait ressembler ma signature sendMsg comme? Je suis incapable d'arriver à la signature fn, en particulier la partie rappel.
Merci à tous ceux qui m'ont laissé savoir comment faire.
'std :: function'? Ou un type de gabarit? – Arcinde
okay. J'ai perdu le contact avec beaucoup de C++ ces jours-ci. Pourriez-vous fournir un exemple simple .. pls –
ok, merci pour l'indice. Je semble l'avoir. Je suis une sorte de vieille école C++. Se familiariser avec boost, truc asynchrone. –