Click here to Skip to main content
15,895,746 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
AnswerRe: Is any function which close all open files? Pin
Vijjuuu.12-Apr-09 19:25
Vijjuuu.12-Apr-09 19:25 
GeneralRe: Is any function which close all open files? Pin
002comp12-Apr-09 19:38
002comp12-Apr-09 19:38 
GeneralRe: Is any function which close all open files? Pin
Vijjuuu.12-Apr-09 19:52
Vijjuuu.12-Apr-09 19:52 
GeneralRe: Is any function which close all open files? Pin
002comp12-Apr-09 20:38
002comp12-Apr-09 20:38 
QuestionExternal USB Hard Disk Drive Pin
Abinash Mohanty12-Apr-09 18:53
Abinash Mohanty12-Apr-09 18:53 
QuestionList control problem. Pin
sam_psycho12-Apr-09 18:26
sam_psycho12-Apr-09 18:26 
AnswerRe: List control problem. Pin
SachinBhave12-Apr-09 21:34
SachinBhave12-Apr-09 21:34 
QuestionUsing EDCF protocol in Network Simulator program [modified] Pin
linux_00712-Apr-09 10:30
linux_00712-Apr-09 10:30 
Please can any one insert comments for this part of the source code for NS-2 program that use EDCF protocol than DCF .The EDCF use 4 queues in each station than one and modify on the some parameters (CWmin,CWmax,AIFS)these parameters using for assign priorities for each queue.The code is long,, but please i need help.

#include <object.h>
#include <queue.h>
#include <packet.h>
#include <cmu-trace.h>
//#include <iostream.h>
#include "priq.h"
#include "mac-802_11e.h"

typedef int (*PacketFilter)(Packet *, void *);

PriQ_List PriQ::prhead = { 0 };

static class PriQClass : public TclClass {
public:
PriQClass() : TclClass("Queue/DTail/PriQ") {}
TclObject* create(int, const char*const*) {
return (new PriQ);
}
} class_PriQ;


PriQ::PriQ() : DTail()
{
bind("Prefer_Routing_Protocols", &Prefer_Routing_Protocols);
bind("Max_Levels", &max_levels);
bind("Levels", &levels);
LIST_INSERT_HEAD(&prhead, this, link);
flag = 0;
cntl = 0;
level = 0;
}

int
PriQ::command(int argc, const char*const* argv)
{
Scheduler &s = Scheduler::instance();
if (argc == 5 )
{
if(strcmp(argv[1], "Prio") == 0){
if(!(atoi(argv[2]) > levels)){
level = atoi(argv[2]);
if(strcmp(argv[3], "PF") == 0){
pri_[level].setPF(atoi(argv[4]));
return(TCL_OK);
}
if(strcmp(argv[3], "CW_MIN") == 0){
pri_[level].setCW_MIN(atoi(argv[4]));
return(TCL_OK);
}
if(strcmp(argv[3], "CW_MAX") == 0){
pri_[level].setCW_MAX(atoi(argv[4]));
return(TCL_OK);
}
if(strcmp(argv[3], "AIFS") == 0){
pri_[level].setAIFS(atoi(argv[4]));
return(TCL_OK);
}
if(strcmp(argv[3], "TXOPLimit") == 0){
pri_[level].setTXOPLimit(atof(argv[4]));
return(TCL_OK);
}
}else return (TCL_ERROR);
}
}
if (argc == 2 && strcasecmp(argv[1], "reset") == 0)
{
Terminate();
//FALL-THROUGH to give parents a chance to reset
}

return DTail::command(argc, argv);
}

void
PriQ::recv(Packet *p, Handler *h)
{
if(flag == 0) {
((Mac802_11e*) target())->queue_ = this;
flag = 1;
for(int i = 0; i < MAX_PRI; i++) {
pri_[i].setdrop(drop_);
}
}

struct hdr_cmn *ch = HDR_CMN(p);
if(Prefer_Routing_Protocols) {

switch(ch->ptype()) {
case PT_DSR:
case PT_MESSAGE:
case PT_TORA:
case PT_AODV:
recvHighPriority(p, h);
break;

default:
pri_recv(p, h);
}
}
else {
pri_recv(p, h);
}
}

void
PriQ::pri_recv(Packet *p, Handler *h)
{
Scheduler &s = Scheduler::instance();
level = PKT_LEVEL(p);
struct hdr_cmn *ch = HDR_CMN(p);
/* target_handle() is necessary to give the target to class Queue.
* Otherwise the target is not known in class Queue
* when dequeing packet Blush | :O (
*/
pri_[level].target_handle(target_);
pri_[level].recv(p,h);
}


void
PriQ::recvHighPriority(Packet *p, Handler *)
// insert packet at front of queue
{
pri_[cntl].q_->enqueHead(p);
pri_[cntl].target_handle(target_);
if (pri_[cntl].q_->length() >= qlim_)
{
Packet *to_drop = pri_[cntl].q_->lookup(pri_[cntl].q_->length()-1);
pri_[cntl].q_->remove(to_drop);
drop(to_drop);
}
if (!pri_[cntl].blocked()) {
/*
* We're not blocked. Get a packet and send it on.
* We perform an extra check because the queue
* might drop the packet even if it was
* previously empty! (e.g., RED can do this.)
*/


p = pri_[cntl].deque();
if (p != 0) {
pri_[cntl].block();
pri_[cntl].recvHighPri(p);
//target_->recv(p, &qh_); <- done in d-tail.cc
}
}
}

void
PriQ::filter(PacketFilter filter, void * data)
// apply filter to each packet in queue,
// - if filter returns 0 leave packet in queue
// - if filter returns 1 remove packet from queue
{
int i = 0;
while (i < pri_[cntl].q_->length())
{
Packet *p = pri_[cntl].q_->lookup(i);
if (filter(p,data))
{
pri_[cntl].q_->remove(p); // decrements q len
}
else i++;
}
}

Packet*
PriQ::filter(nsaddr_t id)
{
Packet *p = 0;
Packet *pp = 0;
struct hdr_cmn *ch;

for(p = pri_[cntl].q_->head(); p; p = p->next_) {
ch = HDR_CMN(p);
if(ch->next_hop() == id)
break;
pp = p;
}

/*
* Deque Packet
*/
if(p) {
if(pp == 0)
pri_[cntl].q_->remove(p);
else
pri_[cntl].q_->remove(p, pp);
}
return p;
}



/*
* Called at the end of the simulation to purge the IFQ.
*/
void
PriQ::Terminate()
{
for(int i = 0; i< MAX_PRI; i++){
Packet *p;
while((p = pri_[i].deque())) {
drop(p, DROP_END_OF_SIMULATION);
//drop(p);

}
}
}

int PriQ::getLevels(){
return levels;
}
PLEASE NEED HELP!!!!!

modified on Monday, April 13, 2009 1:27 PM

QuestionAPPLICATIONS FOR APPLE MAC Pin
MIKEB7212-Apr-09 8:38
MIKEB7212-Apr-09 8:38 
AnswerRe: APPLICATIONS FOR APPLE MAC Pin
Maximilien12-Apr-09 11:29
Maximilien12-Apr-09 11:29 
QuestionHow to cancel serializing within CDocument::Serilize()? Pin
Joseph Marzbani12-Apr-09 8:28
Joseph Marzbani12-Apr-09 8:28 
Questionhelp with binary Pin
Aljaz11112-Apr-09 7:36
Aljaz11112-Apr-09 7:36 
AnswerRe: help with binary Pin
Luc 64801112-Apr-09 8:30
Luc 64801112-Apr-09 8:30 
GeneralRe: help with binary Pin
Aljaz11112-Apr-09 9:59
Aljaz11112-Apr-09 9:59 
Questionproblem about cvcamshift Pin
onlybluemoon12-Apr-09 5:38
onlybluemoon12-Apr-09 5:38 
Questionhow to delete cstring from specific index Pin
Aljaz11112-Apr-09 3:09
Aljaz11112-Apr-09 3:09 
AnswerRe: how to delete cstring from specific index Pin
Hamid_RT12-Apr-09 5:06
Hamid_RT12-Apr-09 5:06 
GeneralRe: how to delete cstring from specific index Pin
Aljaz11112-Apr-09 7:34
Aljaz11112-Apr-09 7:34 
GeneralRe: how to delete cstring from specific index Pin
Larry Mills Sr12-Apr-09 9:48
Larry Mills Sr12-Apr-09 9:48 
GeneralRe: how to delete cstring from specific index Pin
Aljaz11112-Apr-09 10:00
Aljaz11112-Apr-09 10:00 
GeneralRe: how to delete cstring from specific index Pin
Aljaz11112-Apr-09 10:04
Aljaz11112-Apr-09 10:04 
GeneralRe: how to delete cstring from specific index Pin
«_Superman_»12-Apr-09 18:40
professional«_Superman_»12-Apr-09 18:40 
QuestionRe: how to delete cstring from specific index Pin
David Crow13-Apr-09 3:44
David Crow13-Apr-09 3:44 
QuestionToo FEW Arguments in BOOL? Pin
rbwest8611-Apr-09 21:56
rbwest8611-Apr-09 21:56 
AnswerRe: Too FEW Arguments in BOOL? Pin
David Crow13-Apr-09 3:41
David Crow13-Apr-09 3:41 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.