OMNET++ NETWORK CODING
OMNET++ NETWORK CODING has emerge as an important potential approach of operation on wireless network.Network coding is a method of optimizing the flow of digital data in a network by transmitting digital evidence about messages.Digital evidence by itself contains two or more messages. when messages reaches the destination the message are deduced rather than dis-assembled.

Classification of network coding:
- Inter session network coding.
- Intra session network coding.
Network coding techniques:
- Opportunistic coding and Leading.
- MORE.
- MIXIT.
- CCACK.
- Learning neighbor’s state.
- Physical layer coding.
Download Sample Source Code for OMNeT++Â NETWORK CODING
[code lang="js"]
void TCPGenericSrvApp::handleMessage(cMessage *msg)
{
if (msg->isSelfMessage())
{
sendBack(msg);
}
else if (msg->getKind()==TCP_I_PEER_CLOSED)
{
msg->setKind(TCP_C_CLOSE);
sendOrSchedule(msg, delay+maxMsgDelay);
}
else if (msg->getKind()==TCP_I_DATA || msg->getKind()==TCP_I_URGENT_DATA)
{
GenericAppMsg *appmsg = dynamic_cast<GenericAppMsg *>(msg);
if (!appmsg)
error("Message (%s)%s is not a GenericAppMsg -- "
"probably wrong client app, or wrong setting of TCP's "
"dataTransferMode parameters "
"(try \"object\")",
msg->getClassName(), msg->getName());
msgsRcvd++;
bytesRcvd += appmsg->getByteLength();
emit(rcvdPkSignal, appmsg);
long requestedBytes = appmsg->getExpectedReplyLength();
simtime_t msgDelay = appmsg->getReplyDelay();
if (msgDelay>maxMsgDelay)
maxMsgDelay = msgDelay;
bool doClose = appmsg->getServerClose();
int connId = check_and_cast<TCPCommand *>(appmsg->getControlInfo())->getConnId();
if (requestedBytes==0)
{
delete msg;
}
else
{
delete appmsg->removeControlInfo();
TCPSendCommand *cmd = new TCPSendCommand();
cmd->setConnId(connId);
appmsg->setControlInfo(cmd);
appmsg->setKind(TCP_C_SEND);
appmsg->setByteLength(requestedBytes);
sendOrSchedule(appmsg, delay+msgDelay);
}
if (doClose)
{
cMessage *msg = new cMessage("close");
msg->setKind(TCP_C_CLOSE);
TCPCommand *cmd = new TCPCommand();
cmd->setConnId(connId);
msg->setControlInfo(cmd);
sendOrSchedule(msg, delay+maxMsgDelay);
}
}
else
{
// some indication -- ignore
EV << "drop msg: " << msg->getName() << ", kind:"<< msg->getKind() << endl;
delete msg;
}
if (ev.isGUI())
{
char buf[64];
sprintf(buf, "rcvd: %ld pks %ld bytes\nsent: %ld pks %ld bytes", msgsRcvd, bytesRcvd, msgsSent, bytesSent);
getDisplayString().setTagArg("t", 0, buf);
}
}
[/code]

