Navigation


Changeset 635:134e4fb9eef5 in freeDiameter for doc


Ignore:
Timestamp:
Dec 14, 2010 5:34:46 PM (2 years ago)
Author:
Sebastien Decugis <sdecugis@nict.go.jp>
Branch:
default
Message:

Continued work on python interface

File:
1 edited

Legend:

Unmodified
Added
Removed
  • doc/dbg_interactive.py.sample

    r627 r635  
    8787############# Dictionary ############ 
    8888 
    89 # Create a dedicated dictionary for our tests 
     89##### Create a dedicated dictionary for our tests 
    9090d = dictionary() 
    9191d.dump() 
     
    124124 
    125125c.enum_name = "A_BUFFER_CONSTANT" 
    126 osval = avp_value_os("This is a very long AVP value that we prefer to represent as a constant") 
    127 c.enum_value.os = osval 
     126c.enum_value.os = "This is a very long AVP value that we prefer to represent as a constant" 
    128127c.enum_value.os.dump() 
     128fd_dict_new(d, DICT_ENUMVAL, c, my_type_os) 
     129del c 
     130 
     131# AVP 
     132a = dict_avp_data() 
     133a.avp_code = 234 
     134a.avp_name = "my integer avp" 
     135a.avp_flag_mask = AVP_FLAG_MANDATORY 
     136a.avp_basetype = AVP_TYPE_INTEGER32 
     137r, my_avp_int = fd_dict_new(d, DICT_AVP, a, my_type_int) 
     138 
     139a.avp_vendor = 123 
     140a.avp_name = "my OS avp" 
     141a.avp_flag_mask = AVP_FLAG_MANDATORY + AVP_FLAG_VENDOR 
     142a.avp_flag_val = AVP_FLAG_VENDOR 
     143a.avp_basetype = AVP_TYPE_OCTETSTRING 
     144r, my_avp_os = fd_dict_new(d, DICT_AVP, a, my_type_os) 
     145del a 
     146 
     147# Command 
     148c = dict_cmd_data() 
     149c.cmd_code = 345 
     150c.cmd_name = "My-Python-Request" 
     151c.cmd_flag_mask = CMD_FLAG_REQUEST + CMD_FLAG_PROXIABLE 
     152c.cmd_flag_val = CMD_FLAG_REQUEST + CMD_FLAG_PROXIABLE 
     153r, my_req = fd_dict_new(d, DICT_COMMAND, c, my_appl) 
     154c.cmd_name = "My-Python-Answer" 
     155c.cmd_flag_val = CMD_FLAG_PROXIABLE 
     156r, my_ans = fd_dict_new(d, DICT_COMMAND, c, my_appl) 
     157del c 
     158 
     159# Rule 
     160rd = dict_rule_data() 
     161rd.rule_avp = my_avp_int 
     162rd.rule_position = RULE_REQUIRED 
     163rd.rule_min = -1 
     164rd.rule_max = -1 
     165r, my_rule1 = fd_dict_new(d, DICT_RULE, rd, my_req) 
     166r, my_rule2 = fd_dict_new(d, DICT_RULE, rd, my_ans) 
     167rd.rule_avp = my_avp_os 
     168r, my_rule3 = fd_dict_new(d, DICT_RULE, rd, my_req) 
     169r, my_rule4 = fd_dict_new(d, DICT_RULE, rd, my_ans) 
     170del rd 
     171 
     172d.dump() 
    129173del d 
    130174 
    131 c = dict_enumval_data() 
    132 c.enum_value.os = "coucou" 
    133 c.enum_value.os.dump() 
    134  
     175 
     176####### Now play with the "real" dictionary 
    135177 
    136178gdict = cvar.fd_g_config.cnf_dict 
    137 r, obj = fd_dict_search ( gdict, DICT_APPLICATION, APPLICATION_BY_ID, 3, -1 ) 
     179 
     180r, appl = fd_dict_search ( gdict, DICT_APPLICATION, APPLICATION_BY_ID, 3, -1 ) 
    138181obj.dump() 
    139 r, obj = fd_dict_search( gdict, DICT_AVP, AVP_BY_NAME, "Origin-Host", -1) 
     182r, avp = fd_dict_search( gdict, DICT_AVP, AVP_BY_NAME, "Origin-Host", -1) 
    140183obj.dump() 
    141  
    142 t = new_dict_object_type_ptr() 
    143 fd_dict_gettype(obj, t) 
    144 dict_object_type_ptr_dump(t) 
    145 delete_dict_object_type_ptr(t) 
    146 objdata = new_dict_application_data() 
    147 fd_dict_getval(obj, objdata) 
    148 dict_application_data_application_name_get(objdata) 
    149 delete_dict_application_data(objdata) 
    150  
    151 vd = new_dict_vendor_data() 
    152 dict_vendor_data_vendor_id_set(vd, 123) 
    153 dict_vendor_data_vendor_name_set(vd, "my test vendor") 
    154 pobj = new_dict_object_pptr() 
    155 fd_dict_new ( gdict, DICT_VENDOR, vd, None, pobj) 
    156 delete_dict_vendor_data(vd) 
    157 obj = dict_object_pptr_value(pobj) 
    158 delete_dict_object_pptr(pobj) 
    159 fd_dict_dump_object(obj) 
    160  
    161  
    162 # Sessions 
    163 pmyhdl = new_session_handler_pptr() 
    164 fd_sess_handler_create_internal(pmyhdl, None) 
    165 ### Have to work on this one, a cleanup handler is actually required. 
    166 ### How to define the handler in python ? 
    167 myhdl = session_handler_pptr_value(pmyhdl) 
    168 delete_session_handler_pptr(pmyhdl) 
    169  
    170 psess = new_session_pptr() 
    171 fd_sess_new (psess, fd_config_cnf_diamid_get(cvar.fd_g_config), "dbg_interactive", 0) 
    172 sess = session_pptr_value(psess) 
    173 fd_sess_dump(0, sess) 
    174 fd_sess_destroy(psess) 
    175 delete_session_pptr(psess) 
    176  
     184r, errcmd = fd_dict_get_error_cmd( gdict ) 
     185 
     186data = dict_avp_data() 
     187fd_dict_getval(avp, data) 
     188print data.avp_code 
     189del data 
     190 
     191r, t = fd_dict_gettype(appl) 
     192del t 
     193 
     194r, dict = fd_dict_getdict(avp) 
     195del dict 
     196 
     197 
     198 
     199############# Sessions ############ 
     200 
     201# handler 
     202def my_cleanup(state,sid): 
     203    print "Cleaning up python state for session:", sid 
     204    print "Received state:", state 
     205 
     206hdl = session_handler(my_cleanup) 
     207hdl.dump() 
     208del hdl 
     209 
     210hdl = session_handler(my_cleanup) 
     211 
     212 
     213# Session 
     214s1 = session() 
     215s1.getsid() 
     216s2 = session("this.is.a.full.session.id") 
     217r,s3,isnew = fd_sess_fromsid("this.is.a.full.session.id") 
     218s4 = session("host.id", "opt.part") 
     219 
     220s4.settimeout(30) # the python wrapper takes a number of seconds as parameter for simplicity 
     221s4.dump() 
     222 
     223 
     224# state 
     225mystate = [ 34, "clah", [ 32, 12 ] ] 
     226 
     227s4.store(hdl, mystate) 
     228 
     229 
     230 
     231## TODO : debug the following (segfault) 
     232 
     233def my_cleanup(state,sid): 
     234    print "Cleaning up python state for session:", sid 
     235    print "Received state:", state 
     236 
     237hdl = session_handler(my_cleanup) 
     238s4 = session("host.id", "opt.part") 
     239mystate = [ 34, "clah", [ 32, 12 ] ] 
     240s4.store(hdl, mystate) 
     241del hdl 
     242 
     243 
     244 
     245 
     246 
     247 
     248 
     249 
     250######################### old stuff (need update) ###################### 
    177251 
    178252# Routing data 
Note: See TracChangeset for help on using the changeset viewer.