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

Changeset 4536


Ignore:
Timestamp:
Oct 9, 2009, 2:01:40 PM (8 years ago)
Author:
stud-dettling
Message:
  • Next step in implementing AHO phase 2.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • qos-nslp/branches/20090610-qos-nslp-aho/src/QoS_StateModule.cpp

    r4533 r4536  
    258258                                  const ntlp::mri_explicitsigtarget* rcvd_mri)
    259259{
     260        // TODO: error checking with appropriate return values!!
     261
    260262        // initialize result variables
    261263        resultpdu = NULL;
     
    429431        if (known_pdu->is_notify()) {
    430432                DLog(state_manager::modname, color[blue] << "Received NOTIFY message by the EST-MRM." << color[off]);
     433
     434                // we are in the case, where the mobile node is receiver of a flow
     435                notifymsg* notify = dynamic_cast<notifymsg*>(known_pdu);
     436                assert(notify != NULL);
     437
     438                info_spec* er_obj = notify->get_errorobject();
     439                info_spec::errorclass_t er_class = (info_spec::errorclass_t) er_obj->get_errorclass();
     440                info_spec::errorcode_t er_code = (info_spec::errorcode_t) er_obj->get_errorcode();
     441
     442                if(er_class != info_spec::information) {
     443                        ILog(state_manager::modname, "Received NOTIFY message with error class " << er_obj->get_errorclass_string() << ", ending here!");
     444                        return error_nothing_to_do;
     445                }
     446
     447                if(er_code == info_spec::InitQuery) {
     448                        // create QUERY message
     449                        querymsg* query = new querymsg();
     450       
     451                        // QSPEC
     452                        qspec_object* qspec_obj = notify->get_qspec()->copy();
     453                        query->set_qspec(qspec_obj);
     454                        // Reserve-Init-Flag
     455                        query->set_reserve_init_flag();
     456       
     457                        known_nslp_pdu *query_pdu = dynamic_cast<known_nslp_pdu*>(query);
     458                        assert(query_pdu != NULL);
     459       
     460
     461                        // send QUERY message with PC-MRM
     462                        mri_pathcoupled pc_mri = rcvd_mri->get_mri_pc();
     463                        pc_mri.invertDirection();
     464                        bool down = pc_mri.get_downstream();
     465       
     466                        SignalingMsg* sigmsg = new SignalingMsg();
     467                        sigmsg->set_msg(query_pdu);
     468                        sigmsg->set_sid(*sid);
     469                        sigmsg->set_sig_mri(&pc_mri);
     470                        sigmsg->set_downstream(down);
     471                        sigmsg->send_or_delete();
     472                }
     473                else if(er_code == info_spec::InitReserve) {
     474                        // get context of given session
     475                        //NSLP_Context* context = sid ? contextmap.find(*sid) : NULL;
     476
     477                        //create_query_message_from_context(context, query);
     478                }
     479                else {
     480                        ILog(state_manager::modname, "Received NOTIFY message with error class " << er_obj->get_errorclass_string()
     481                                        << ", but unexpected error code, ending here!");
     482                        return error_nothing_to_do;
     483                }
     484
    431485                return error_nothing_to_do;
    432486        }
     
    24532507   
    24542508    //======================================== process REFRESH_PERIOD ================================================
    2455     char ac[80];
    2456     if (gethostname(ac, sizeof(ac)) == -1) {
    2457         cerr << "Error when getting local host name." << endl;
    2458     }
    24592509    rp* r_p = reservemsg->get_rp();
    24602510    if (r_p) {
     
    43014351                // on the role of the mobile node
    43024352                if(qn_type == NSLP_Context::QNI) {
     4353                        // create RESERVE message
    43034354                        reservereq* res = new reservereq();
    43044355
     
    43154366                }
    43164367                else if(qn_type == NSLP_Context::QNR) {
     4368                        // create QUERY message
    43174369                        querymsg* query = new querymsg();
    43184370
     
    43994451 * @param rii RII object to use in RESERVE message, NULL if none.
    44004452 * */
     4453// TODO: which QSPEC to choose, after modifying context to allow multiple concurrent flows within a session
    44014454void state_manager::create_reserve_message_from_context(NSLP_Context *context, reservereq *res, rii *send_rii) {
    44024455        uint32 n32;
     
    44674520 * @param query the QUERY message.
    44684521 * */
     4522// TODO: which QSPEC to choose, after modifying context to allow multiple concurrent flows within a session
    44694523void state_manager::create_query_message_from_context(NSLP_Context *context, querymsg *query) {
    44704524        uint128 n128;
Note: See TracChangeset for help on using the changeset viewer.