undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
undisposed object: (cMessage) Wireless.wirelessHost1.udpApp. -- check module destructor
End.
The UDP App:
#include "inet/applications/udpapp/UDPMasterCli.h"
#include "inet/transportlayer/contract/udp/UDPControlInfo_m.h"
#include "inet/networklayer/common/L3AddressResolver.h"
namespace inet {
Define_Module(UDPMasterCli);
simsignal_t UDPMasterCli::rcvdPkSignal = registerSignal("rcvdPk");
void UDPMasterCli::initialize(int stage)
{
ApplicationBase::initialize(stage);
if (stage == INITSTAGE_LOCAL) {
int localPort = par("localPort");
socket.setOutputGate(gate("udpOut"));
socket.bind(localPort);
selfMsg = new cMessage("UDPStartClient");
}
}
void UDPMasterCli::finish()
{
ApplicationBase::finish();
}
void UDPMasterCli::handleMessageWhenUp(cMessage *msg)
{
if (msg->isSelfMessage()) {
requestStream();
scheduleAt(simTime() + exponential(1.0), new cMessage);
}
else if (msg->getKind() == UDP_I_DATA) {
// process incoming packet
receiveStream(check_and_cast<CCNPacket *>(msg));
}
else if (msg->getKind() == UDP_I_ERROR) {
EV_WARN << "Ignoring UDP error report\n";
delete msg;
}
else {
throw cRuntimeError("Unrecognized message (%s)%s", msg->getClassName(), msg->getName());
}
}
void UDPMasterCli::requestStream()
{
int svrPort = par("serverPort");
const char *address = par("serverAddress");
L3Address svrAddr = L3AddressResolver().resolve(address);
L3Address srcAddr = L3AddressResolver().resolve(getParentModule()->getFullName());
if (svrAddr.isUnspecified()) {
EV_ERROR << "Server address is unspecified, skip sending video stream request\n";
return;
}
srand(time(NULL));
int isInterest = rand() % 2;
std::ostringstream str;
str << rand() % 10;
name = "CCNPacket-" + str.str();
CCNPacket *CCNPk = new CCNPacket();
CCNPk->setName(name.c_str());
CCNPk->setPart(1);
CCNPk->setSrcAddress(srcAddr);
if (isInterest == 1)
CCNPk->setIsInterest(true);
else
CCNPk->setIsInterest(false);
CCNPk->setContent("CCN Packet");
EV_INFO << "CCN Packet. Name " << CCNPk->getName() <<"Part" << CCNPk->getPart() << "Is interest?" << CCNPk->getIsInterest() << endl;
CCNPk->setByteLength(1);
socket.sendTo(CCNPk, svrAddr, svrPort);
}
void UDPMasterCli::receiveStream(CCNPacket *CCNPk)
{
//CCNPacket *CCNPk = check_and_cast<CCNPacket *>(msg);
EV_INFO << "Pacote de dados enviado pelo servidor: " << CCNPk->getName() << "\n";
delete CCNPk;
}
bool UDPMasterCli::handleNodeStart(IDoneCallback *doneCallback)
{
simtime_t startTimePar = par("startTime");
simtime_t startTime = std::max(startTimePar, simTime());
scheduleAt(startTime, selfMsg);
return true;
}
bool UDPMasterCli::handleNodeShutdown(IDoneCallback *doneCallback)
{
cancelEvent(selfMsg);
//TODO if(socket.isOpened()) socket.close();
return true;
}
void UDPMasterCli::handleNodeCrash()
{
cancelEvent(selfMsg);
}
} // namespace inet