Navigation


Changeset 635:134e4fb9eef5 in freeDiameter for doc/dbg_interactive.py.sample


Ignore:
Timestamp:
Dec 14, 2010, 5:34:46 PM (13 years ago)
Author:
Sebastien Decugis <sdecugis@nict.go.jp>
Branch:
default
Phase:
public
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.