Your implementation of push() is quite basic - not sure what is wrong there. This element does have equal numbers of input and output ports right? (your header file implies that it must)
Sprinkle 'assert(p != NULL)' statements throughout that function and see if any of them blow up. Also ensure that the element upstream is passing a valid packet. - Ian On 03/02/2011 09:26 AM, [email protected] wrote: > i think the problem is with the line " output(h).push(p);". in the "push" > finction..if its commented the element works fine... can u pls help > > > ########### time.cc ########## > #include<click/config.h> > #include "time.hh" > #include<click/confparse.hh> > #include<click/error.hh> > #include<click/glue.hh> > #include<click/router.hh> > CLICK_DECLS > > Time::Time() > : _interval(0, Timestamp::subsec_per_sec / 2), > _count0(0),_count1(0), _active(true), _timer(this) > { > click_chatter("constructor count0: %d count1: %d",_count0,_count1); > } > > Time::~Time() > { > } > > int > Time::configure(Vector<String> &conf, ErrorHandler *errh) > { > if (cp_va_kparse(conf, this, errh, > "INTERVAL", cpkP, cpTimestamp,&_interval, > "ACTIVE", 0, cpBool,&_active, > cpEnd)< 0) > return -1; > > } > > int > Time::initialize(ErrorHandler *) > { > _timer.initialize(this); > if (_active) > _timer.schedule_after(_interval); > return 0; > } > > void > Time::run_timer(Timer *) > { > > > //@@@@@@@@@@@@@@@@@ get counters from pull element @@@@@@@@@@@@@@@ > > click_chatter("Left count : %d Right count :%d",_count1,_count0); > > if ((_count0==0)&&(_count1)==0) > click_chatter("No netowrk flow"); > > if(_count0>_count1) > { > click_chatter("Right is hot"); > hot_int =0; > } > > else if ((_count0==0)||(_count1)==0) > { > if(_count0=0) > { > if(_count1=0) > click_chatter("No network flow"); > else > click_chatter("No flow from left"); > } > > } > > if(_count1>_count0) > { > click_chatter("Left is hot"); > hot_int=1; > } > > //@@@@@@@@@@@@@@@@@@ reset all counters @@@@@@@@@@@@@@@@@@@@@@@@@@ > _count0=0; > _count1=0; > click_chatter("Timer reset"); > > //@@@@@@@@@@@@@@@@@@@@ UDP section @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ > > pudp=input(2).pull(); > if(pudp) > { > > click_chatter("@@@@@@@@@@@@ Recieved UDP packet @@@@@@@@@@@@@@@@@"); > push(hot_int,pudp); > > } > > _timer.reschedule_after(_interval); > } > > Packet* > Time::pull(int) > { > > p0=input(0).pull(); > > if(p0) > { > _count0+=1; > p0->kill(); > } > > p1=input(1).pull(); > > if(p1) > { > _count1+=1; > p1->kill(); > } > > > return p0; > > } > > void > Time::push(int h, Packet *p) > { > > if(p) > { > // pudp_n = p->clone(); > > click_chatter("Made packet"); > output(h).push(p); > click_chatter("Pushed packet"); > } > } > > CLICK_ENDDECLS > ELEMENT_REQUIRES(userlevel) > EXPORT_ELEMENT(Time) > ELEMENT_MT_SAFE(Time) > > ########### time.hh ########## > > > #ifndef CLICK_TIME_HH > #define CLICK_TIME_HH > #include<click/element.hh> > #include<click/timer.hh> > CLICK_DECLS > > > class Time : public Element { public: > > Time(); > ~Time(); > > const char *class_name() const { return "Time"; } > const char *port_count() const { return "-/="; } > const char *processing() const { return AGNOSTIC; } > > int configure(Vector<String> &, ErrorHandler *); > int initialize(ErrorHandler *); > > void run_timer(Timer *); > Packet* pull(int); > void push(int, Packet *p); > > private: > Packet *p0, *p1, *pudp,*pudp_n; > Timestamp _interval; > int _count0,_count1,hot_int; > bool _active; > Timer _timer; > int counter; > String _data; > > }; > > CLICK_ENDDECLS > #endif > > > > >> Please include your code. >> - Ian >> >> >> On 03/02/2011 08:16 AM, [email protected] wrote: >>> hi all... >>> i wrote an agnostic element. its pull ekement pull packet from 3 input >>> ports and push elements on having certain conditions based on pulled >>> packets generates packet and pushes it to output port.. while doing >>> this >>> i get an error.. >>> >>> "click: ../include/click/element.hh:559: void >>> Element::Port::push(Packet*) >>> const: Assertion `_e&& p' failed." >>> >>> can u pls help... >>> >>> >>> >>> ----------------------------------------- >>> This email was sent using TCEMail Service. >>> Thiagarajar College of Engineering >>> Madurai-625 015, India >>> >>> _______________________________________________ >>> click mailing list >>> [email protected] >>> https://amsterdam.lcs.mit.edu/mailman/listinfo/click >> _______________________________________________ >> click mailing list >> [email protected] >> https://amsterdam.lcs.mit.edu/mailman/listinfo/click >> > > > > ----------------------------------------- > This email was sent using TCEMail Service. > Thiagarajar College of Engineering > Madurai-625 015, India > > > > ----------------------------------------- > This email was sent using TCEMail Service. > Thiagarajar College of Engineering > Madurai-625 015, India > > _______________________________________________ > click mailing list > [email protected] > https://amsterdam.lcs.mit.edu/mailman/listinfo/click _______________________________________________ click mailing list [email protected] https://amsterdam.lcs.mit.edu/mailman/listinfo/click
