NSIS-ka
A free C++ implementation of NSIS protocols

Changeset 4556


Ignore:
Timestamp:
Oct 14, 2009, 3:04:55 PM (8 years ago)
Author:
stud-dettling
Message:
  • Added state to NSLP_Context to save whether a node is flow sender or flow receiver or none of them
Location:
qos-nslp/branches/20090610-qos-nslp-aho
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • qos-nslp/branches/20090610-qos-nslp-aho/include/nslp_aho_context.h

    r4546 r4556  
    6767  void unlock();
    6868
    69   /*
    70         /// NSLP_Context hash_maps
    71         typedef hash_map<uint32, rii*> riimap_t;
    72         typedef riimap_t::iterator rii_hashmap_it_t;
    73         /// hashmap array
    74         riimap_t rii_hashmap;
    75   */
    7669private:
    7770  NSLP_AHO_Context::node_role_t node_role;
  • qos-nslp/branches/20090610-qos-nslp-aho/include/nslp_context.h

    r4529 r4556  
    134134        qspec_object* get_context_qspec();
    135135
     136        void set_is_flow_sender(bool is_sender);
     137        bool get_is_flow_sender() const;
     138
     139        void set_is_flow_receiver(bool is_sender);
     140        bool get_is_flow_receiver() const;
     141
    136142        /// lock mutex
    137143        void lock();
     
    180186            qspec_object* context_qspec;
    181187
     188            // needs to be saved in context since in case of a handover
     189            // a mobile node cannot determine if sender or receiver by
     190            // means of the node address
     191            bool is_flow_sender;
     192            bool is_flow_receiver;
     193
    182194            /// This mutex is used to lock the NSLP context
    183195            pthread_mutex_t mutex;
  • qos-nslp/branches/20090610-qos-nslp-aho/src/QoS_StateModule.cpp

    r4546 r4556  
    129129state_manager::is_flow_source(const ntlp::mri_pathcoupled* mri) const
    130130{
     131  if(mri == NULL) {
     132    return false;
     133  }
     134
    131135  // choose own address for comparison
    132136  const hostaddress& flow_src = mri->get_sourceaddress();
     
    149153state_manager::is_flow_destination(const ntlp::mri_pathcoupled* mri) const
    150154{
     155  if(mri == NULL) {
     156    return false;
     157  }
     158
    151159  // choose own address for comparison
    152160  const hostaddress& flow_dest = mri->get_destaddress();
     
    14751483            ILog(state_manager::modname, "create_new_context() - UPSTREAM");
    14761484
     1485
     1486          // determine if we are flow sender or flow receiver or none of them
     1487          bool is_flow_sender = is_flow_source(rcvd_mri);
     1488          bool is_flow_receiver = is_flow_destination(rcvd_mri);
     1489
     1490
    14771491          local_context->lock();
    14781492          local_context->set_qn_type(type);
     
    14831497          else
    14841498            local_context->set_logical_mri(rcvd_mri);
     1499          local_context->set_is_flow_sender(is_flow_sender);
     1500          local_context->set_is_flow_receiver(is_flow_receiver);
    14851501          local_context->unlock();
    14861502
     
    30263042        updated = true;
    30273043        ILog(state_manager::modname, "END find_and_update_context()");
    3028     }
     3044    } // end if context found
    30293045    return updated;
    30303046}
     
    44604476        bool is_flow_sender=false;
    44614477        bool is_flow_receiver=false;
     4478        bool is_flow_sender2=false;
     4479        bool is_flow_receiver2=false;
    44624480
    44634481
     
    44744492                qn_type = context->get_qn_type();
    44754493                pc_mri = context->get_mri()->copy();
     4494
     4495                is_flow_sender2 = context->get_is_flow_sender();
     4496                is_flow_receiver2 = context->get_is_flow_receiver();
    44764497                context->unlock();
    44774498
     
    44904511                ILog(state_manager::modname, "PC-MRI src address: " << pc_mri->get_sourceaddress());
    44914512                ILog(state_manager::modname, "PC-MRI dst address: " << pc_mri->get_destaddress());
     4513
     4514                ILog(state_manager::modname, "is_flow_sender: " << (is_flow_sender2 ? "true" : "false"));
     4515                ILog(state_manager::modname, "is_flow_receiver: " << (is_flow_receiver2 ? "true" : "false"));
    44924516
    44934517
     
    45964620
    45974621void state_manager::ho_phase_3_2a(NSLP_Context* context, void *param1, void *param2) {
    4598         ILog(state_manager::modname, "aho_phase_3_2a)");
     4622        ILog(state_manager::modname, "aho_phase_3_2a");
    45994623
    46004624        hostaddress *l3_ar_n;
     
    46534677                        }
    46544678                        aho_context->unlock();
     4679
     4680
     4681                        // error checking
     4682                        if((!is_flow_sender) && (!is_flow_receiver)) {
     4683                                ERRLog(state_manager::modname, "AHO not implemented for case where mobile node isn't endpoint of a flow!");
     4684                                return;
     4685                        }
    46554686       
    46564687       
     
    46614692                                                << ") for Reservation with SID [" << sid.to_string() << "]");
    46624693       
     4694// TODO: in eigene Methode verschieben
    46634695                                // build RESERVE or QUERY message depending
    46644696                                // on the role of the mobile node
     
    47144746                                sigmsg->set_downstream(pc_mri->get_downstream());
    47154747                                sigmsg->send_or_delete();
     4748// TODO: Ende in eigene Methode verschieben
    47164749                        }
    47174750                        else {
    47184751                                // new access router is not the anticipated one
    4719                                 ILog(state_manager::modname, "New Router is not the anticipated one, proceeding with Hard Handover.");
     4752                                ILog(state_manager::modname, "New Router is not the anticipated one or anticipated reservation failed, proceeding with Hard Handover.");
    47204753                                hard_handover = true;
    47214754                        }
     
    47274760                else {
    47284761                        // no NSLP_AHO_Context found
    4729                         ILog(state_manager::modname, "No NSLP_AHO_Context found for this Session or anticipated reservation failed, proceeding with Hard Handover.");
     4762                        ILog(state_manager::modname, "No NSLP_AHO_Context found for this Session, proceeding with Hard Handover.");
    47304763                        hard_handover = true;
    47314764                }
     
    47364769                        ILog(state_manager::modname, "Starting AHO-Phase 3 / 2a (" <<  color[magenta] << "Hard Handover" <<  color[off]
    47374770                                        << ") for Reservation with SID [" << sid.to_string() << "]");
    4738 
    4739                         // TODO
     4771// TODO: is_flow_sender, is_flow_receiver kann nicht verwendet werden, wenn kein context existiert!!
     4772                        if(is_flow_sender) {
     4773                                //
     4774                        }
     4775                        else if(is_flow_receiver) {
     4776                                //TODO
     4777                        }
     4778                        else {
     4779                                ERRLog(state_manager::modname, "AHO not implemented for case where mobile node isn't endpoint of a flow!");
     4780                                return;
     4781                        }
    47404782                }
    47414783        }
  • qos-nslp/branches/20090610-qos-nslp-aho/src/nslp_context.cpp

    r4529 r4556  
    659659}
    660660*/
     661
     662
     663/** This function sets whether a node is the sender of the flow.
     664  * @param true if sender of the flow.
     665  */
     666void NSLP_Context::set_is_flow_sender(bool is_sender) {
     667          is_flow_sender = is_sender;
     668}
     669
     670
     671/** This function returns whether a node is the sender of the flow.
     672  * @return true if sender of the flow.
     673  */
     674bool NSLP_Context::get_is_flow_sender() const {
     675          return is_flow_sender;
     676}
     677
     678
     679/** This function sets whether a node is the receiver of the flow.
     680  * @param true if receiver of the flow
     681  */
     682void NSLP_Context::set_is_flow_receiver(bool is_receiver) {
     683          is_flow_receiver = is_receiver;
     684}
     685
     686
     687/** This function returns whether a node is the receiver of the flow.
     688  * @return true if receiver of the flow.
     689  */
     690bool NSLP_Context::get_is_flow_receiver() const {
     691          return is_flow_receiver;
     692}
     693
    661694//@}
    662695
Note: See TracChangeset for help on using the changeset viewer.