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

Changeset 4530


Ignore:
Timestamp:
Oct 8, 2009, 3:49:29 PM (8 years ago)
Author:
stud-dettling
Message:
  • Extended NSLP_AHO_Context.
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

    r4529 r4530  
    88#include <ext/hash_map>
    99#include "llhashers.h"
     10#include "address.h"
    1011
    1112
     
    3435  };
    3536
    36   void set_aho_node_role(NSLP_AHO_Context::node_role_t role);
     37  void set_aho_node_role(const NSLP_AHO_Context::node_role_t role);
    3738  NSLP_AHO_Context::node_role_t get_aho_node_role();
     39
     40  void set_addr_mobile_node(const hostaddress &mn);
     41  const hostaddress &get_addr_mobile_node() const;
     42
     43  void set_addr_new_access_router(const hostaddress &ar_n);
     44  const hostaddress &get_addr_new_access_router() const;
    3845
    3946  /// lock mutex
     
    5259private:
    5360  NSLP_AHO_Context::node_role_t node_role;
     61  hostaddress mn;
     62  hostaddress ar_n;
    5463
    5564  /// This mutex is used to lock the NSLP_AHO_Context
  • qos-nslp/branches/20090610-qos-nslp-aho/src/Makefile

    r4529 r4530  
    4848                info_spec.o nslp_object.o nslp_pdu.o nslp_context.o aggregate.o \
    4949                rmf.o QoS_StateModule.o QoS_Appl_Msg.o SignalingAppl.o QoS_NSLP_API.o QoS_NSLP_Client_API.o \
    50                 QoS_NSLP_UDS_API.o TestConsole.o session_id_list.o rsn_list.o qosnslp_starter.o \
    51                 qos_nslp_aho_contextmap.o nslp_aho_context.o
     50                QoS_NSLP_UDS_API.o TestConsole.o session_id_list.o rsn_list.o qosnslp_starter.o
     51ifeq ($(USE_AHO), 1)
     52QOSNSLP_OBJS += qos_nslp_aho_contextmap.o nslp_aho_context.o
     53endif
    5254
    5355ifdef QT_DIR
  • qos-nslp/branches/20090610-qos-nslp-aho/src/QoS_StateModule.cpp

    r4529 r4530  
    282282                DLog(state_manager::modname, color[blue] << "Received RESERVE message by the EST-MRM." << color[off]);
    283283
     284                // create AHO_Context in aho_contextmap if necessary
     285                if(aho_contextmap.find(*sid) == NULL) {
     286                        // no AHO_context so far, thus create one as AR_N
     287                        NSLP_AHO_Context *aho_context = new NSLP_AHO_Context();
     288       
     289                        aho_context->lock();
     290                        // set role of node during an AHO in AHO_Context
     291                        aho_context->set_aho_node_role(NSLP_AHO_Context::ARN);
     292                        // save address of mobile node MN
     293                        aho_context->set_addr_mobile_node(rcvd_mri->get_origin_sig_address());
     294                        aho_context->unlock();
     295
     296                        // save context in aho_contextmap
     297                        aho_contextmap.insert(*sid, aho_context);
     298                }
     299
     300
     301                // determine node role within AHO
     302                NSLP_AHO_Context::node_role_t role = NSLP_AHO_Context::OTHER;
     303                NSLP_AHO_Context *aho_context = aho_contextmap.find(*sid);
     304                if(aho_context != NULL) {
     305                        aho_context->lock();
     306                        role = aho_context->get_aho_node_role();
     307                        aho_context->unlock();
     308                }
     309
     310                switch(role) {
     311                case NSLP_AHO_Context::MN:
     312                        DLog(state_manager::modname, "Node Role: MN");
     313                        break;
     314                case NSLP_AHO_Context::ARN:
     315                        DLog(state_manager::modname, "Node Role: ARN, address of MN is " << aho_context->get_addr_mobile_node());
     316                        break;
     317                case NSLP_AHO_Context::CN:
     318                        DLog(state_manager::modname, "Node Role: CN");
     319                        break;
     320                case NSLP_AHO_Context::OTHER:
     321                        DLog(state_manager::modname, "Node Role: OTHER");
     322                        break;
     323                }
     324
     325
    284326                mri_pathcoupled pc_mri = rcvd_mri->get_mri_pc();
    285327
     
    303345        if (known_pdu->is_query()) {
    304346                DLog(state_manager::modname, color[blue] << "Received QUERY message by the EST-MRM." << color[off]);
     347
     348                // if there exists any out-dated context, delete it
     349                if(aho_contextmap.find(*sid) != NULL) {
     350                        aho_contextmap.erase(*sid);
     351                }
     352
     353                // create AHO_Context in aho_contextmap
     354                NSLP_AHO_Context *aho_context = new NSLP_AHO_Context();
     355
     356                aho_context->lock();
     357                // set role of node during an AHO in AHO_Context
     358                aho_context->set_aho_node_role(NSLP_AHO_Context::ARN);
     359                // save address of mobile node MN
     360                aho_context->set_addr_mobile_node(rcvd_mri->get_origin_sig_address());
     361                aho_context->unlock();
     362
     363                // save context in aho_contextmap
     364                aho_contextmap.insert(*sid, aho_context);
     365
     366               
     367                // TODO: proceed with aho
     368
    305369                return error_nothing_to_do;
    306370        }
     
    41284192
    41294193        if(context) {
     4194                // retrieve some informations from context
    41304195                context->lock();
    4131                 // retrieve some informations from context
    41324196                context->get_s_id(tmp_sid);
    41334197                qn_type = context->get_qn_type();
     
    41404204
    41414205
    4142                 //----------------------------
     4206                // create new AHO_Context
     4207                NSLP_AHO_Context *aho_context = new NSLP_AHO_Context();
     4208                aho_context->lock();
     4209                // set role of node during an AHO in AHO_Context
     4210                aho_context->set_aho_node_role(NSLP_AHO_Context::MN);
     4211                // save address of access router AR_N
     4212                aho_context->set_addr_new_access_router(*l3_ar_n);
     4213                aho_context->unlock();
     4214
     4215                // TODO: remove
    41434216                /*
    4144                 NSLP_AHO_Context::node_role_t role = context->get_aho_node_role();
    4145                 switch(role) {
    4146                 case NSLP_Context::MN:
    4147                         DLog(state_manager::modname, "Node Role: MN");
    4148                         break;
    4149                 case NSLP_Context::ARN:
    4150                         DLog(state_manager::modname, "Node Role: ARN");
    4151                         break;
    4152                 case NSLP_Context::OTHER:
    4153                         DLog(state_manager::modname, "Node Role: OTHER");
    4154                         break;
    4155                 }
    4156 
    4157                 // set role of node during an AHO in context
    4158                 context->set_aho_node_role(NSLP_Context::MN);
    4159 
    4160                 role = context->get_aho_node_role();
    4161                 switch(role) {
    4162                 case NSLP_Context::MN:
    4163                         DLog(state_manager::modname, "Node Role: MN");
    4164                         break;
    4165                 case NSLP_Context::ARN:
    4166                         DLog(state_manager::modname, "Node Role: ARN");
    4167                         break;
    4168                 case NSLP_Context::OTHER:
    4169                         DLog(state_manager::modname, "Node Role: OTHER");
    4170                         break;
    4171                 }
    4172                 */
    4173                 //----------------------------
    4174                 NSLP_AHO_Context *aho_context = new NSLP_AHO_Context();
    4175                 NSLP_AHO_Context::node_role_t role = aho_context->get_aho_node_role();
    4176                 switch(role) {
    4177                 case NSLP_AHO_Context::MN:
    4178                         DLog(state_manager::modname, "Node Role: MN");
    4179                         break;
    4180                 case NSLP_AHO_Context::ARN:
    4181                         DLog(state_manager::modname, "Node Role: ARN");
    4182                         break;
    4183                 case NSLP_AHO_Context::CN:
    4184                         DLog(state_manager::modname, "Node Role: CN");
    4185                         break;
    4186                 case NSLP_AHO_Context::OTHER:
    4187                         DLog(state_manager::modname, "Node Role: OTHER");
    4188                         break;
    4189                 }
    4190 
    4191                 // set role of node during an AHO in aho_context
    4192                 aho_context->set_aho_node_role(NSLP_AHO_Context::MN);
    4193 
    41944217                role = aho_context->get_aho_node_role();
    41954218                switch(role) {
     
    42074230                        break;
    42084231                }
    4209 
    4210                 // insert aho_context into aho_contextmap
     4232                */
     4233
     4234                // insert AHO_Context into aho_contextmap
    42114235                aho_contextmap.insert(sid, aho_context);
    42124236
     
    43014325void state_manager::ho_phase_3_2a(NSLP_Context* context, void *param1, void *param2) {
    43024326        ILog(state_manager::modname, "aho_phase_3_2a)");
     4327
     4328        // TODO: prÃŒfen, ob AR_N_saved == AR_N_received
     4329        // falls nein - Hard Handover
    43034330
    43044331        //
  • qos-nslp/branches/20090610-qos-nslp-aho/src/nslp_aho_context.cpp

    r4529 r4530  
    3535  * @param role the role of the node.
    3636  */
    37 void NSLP_AHO_Context::set_aho_node_role(NSLP_AHO_Context::node_role_t role)
     37void NSLP_AHO_Context::set_aho_node_role(const NSLP_AHO_Context::node_role_t role)
    3838{
    3939  node_role = role;
     
    4949}
    5050
     51
     52/** This function is used by the new access router and sets the address of
     53  * the mobile node, which is needed later in an anticipated handover.
     54  * @param the address of the mobile node.
     55  */
     56void NSLP_AHO_Context::set_addr_mobile_node(const hostaddress &mn) {
     57  this->mn = mn;
     58}
     59
     60
     61/** This function gets the address of the mobile node, which is needed during
     62  * an anticipated handover.
     63  * @return the address of the mobile node.
     64  */
     65const hostaddress &NSLP_AHO_Context::get_addr_mobile_node() const {
     66  return mn;
     67}
     68
     69
     70/** This function is used by the mobile node and sets the address of the
     71  * new access router, which is needed later in an anticipated handover.
     72  * @param the address of the new access router.
     73  */
     74void NSLP_AHO_Context::set_addr_new_access_router(const hostaddress &ar_n) {
     75  this->ar_n = ar_n;
     76}
     77
     78
     79/** This function gets the address of the new access router, which is
     80  * needed during an anticipated handover.
     81  * @return the address of the new access router.
     82  */
     83const hostaddress &NSLP_AHO_Context::get_addr_new_access_router() const {
     84  return ar_n;
     85}
     86
    5187} // end namespace qos_nslp
    5288
Note: See TracChangeset for help on using the changeset viewer.