#include "Node.h" #include <iostream> Node::Node( const Address& address, PacketFactory* pf ) : node_address_( address ), pf_( pf ), suspended_for_( 0 ) { //cout << "Costruisco un nodo" << endl; pf_->add( node_address_ ); } Node::~Node() { //cout << "Distruggo un nodo" << endl; } const Address& Node::getAddress() const { return node_address_; } bool Node::accept( const Packet& inpacket ) const { if ( inpacket.isDestinated( node_address_ ) == true ) { handle( inpacket ); return true; } else return false ; } Packet* Node::send() { Packet* outpacket = NULL; //cout << " debug: sono in send()" << endl; if ( suspended_for_ == 0 ) { outpacket = pf_->create( getAddress() ); //cout << "Pacchetto pronto per la spedizione" << endl; } else { --suspended_for_; //decremento il contatore cout << getAddress() << " sospeso ancora per " << suspended_for_ << endl; } return outpacket; } void Node::suspend(const int time ) { if( suspended_for_ == 0) { suspended_for_ = time; cout << getAddress() << " e' stato sospeso per " << suspended_for_ << " unita' di tempo" << endl; } } void Node::handle( const Packet& packet_to_handle ) const { cout << "Pacchetto " << packet_to_handle.getInfo() << " processato da " << getAddress() << ": Nodo"<< endl; }