11 #include <ibrcommon/net/vinterface.h>
28 std::string buffer =
"";
36 if (buffer.length() == 0)
continue;
39 std::string::reverse_iterator iter = buffer.rbegin();
40 if ( (*iter) ==
'\r' ) buffer = buffer.substr(0, buffer.length() - 1);
43 if (cmd.empty())
continue;
79 ibrcommon::MutexLock l(_write_lock);
85 ibrcommon::MutexLock l(_write_lock);
89 void ApiP2PExtensionHandler::processCommand(
const std::vector<std::string> &cmd)
92 if (cmd[0] ==
"connected") {
93 if (cmd.size() < 2)
throw ibrcommon::Exception(
"not enough parameters");
99 ibrcommon::MutexLock l(_write_lock);
102 else if (cmd[0] ==
"disconnected") {
103 if (cmd.size() < 2)
throw ibrcommon::Exception(
"not enough parameters");
109 ibrcommon::MutexLock l(_write_lock);
112 else if (cmd[0] ==
"discovered") {
113 if (cmd.size() < 2)
throw ibrcommon::Exception(
"not enough parameters");
119 ibrcommon::MutexLock l(_write_lock);
122 else if (cmd[0] ==
"interface") {
123 if (cmd.size() < 2)
throw ibrcommon::Exception(
"not enough parameters");
125 if (cmd[1] ==
"up") {
126 const ibrcommon::vinterface iface(cmd[2]);
129 ibrcommon::MutexLock l(_write_lock);
132 else if (cmd[1] ==
"down") {
133 const ibrcommon::vinterface iface(cmd[2]);
136 ibrcommon::MutexLock l(_write_lock);
140 ibrcommon::MutexLock l(_write_lock);
145 ibrcommon::MutexLock l(_write_lock);
148 }
catch (
const std::exception&) {
149 ibrcommon::MutexLock l(_write_lock);
void fireDisconnected(const dtn::data::EID &eid, const dtn::core::Node::URI &uri) const
ApiP2PExtensionHandler(ClientHandler &client, ibrcommon::socketstream &stream, dtn::core::Node::Protocol proto)
virtual dtn::core::Node::Protocol getProtocol() const
void remove(const dtn::core::Node &n)
dtn::net::ConnectionManager & getConnectionManager()
virtual ~ApiP2PExtensionHandler()
virtual void disconnect(const dtn::core::Node::URI &uri)
void fireInterfaceDown(const ibrcommon::vinterface &iface) const
void add(const dtn::core::Node &n)
virtual void connect(const dtn::core::Node::URI &uri)
void fireConnected(const dtn::data::EID &eid, const dtn::core::Node::URI &uri) const
virtual void __cancellation()
void fireInterfaceUp(const ibrcommon::vinterface &iface) const
ibrcommon::socketstream & _stream
void fireDiscovered(const dtn::data::EID &eid, const dtn::core::Node::URI &uri) const
static std::vector< std::string > tokenize(const std::string &token, const std::string &data, const std::string::size_type max=std::string::npos)
static BundleCore & getInstance()