Project

General

Profile

reader_test_async.py

Nitesh Mor, 09/23/2016 07:29 PM

Download (1.4 KB)

 
1
#!/usr/bin/env python
2

    
3

    
4
"""
5
A simple program to demonstrate asynchronous read
6
"""
7

    
8
import sys
9
import gdp
10
import pprint
11

    
12

    
13
def main(name_str, start, stop):
14

    
15
    # create a python object
16
    gcl_name = gdp.GDP_NAME(name_str)
17

    
18
    # Assume that the GCL already exists
19
    gcl_handle = gdp.GDP_GCL(gcl_name, gdp.GDP_MODE_RO)
20

    
21
    recs = 0
22
    for i in xrange(start, stop+1):
23
        retstatus = gcl_handle.multiread(i, 1)
24
        print "Sending multiread request# %d (%d, %d), multiread return status: %s" % \
25
                        (i, i, 1, gdp.ep_stat_tostr(retstatus))
26
        recs += 1
27

    
28
    t = {'tv_sec':0, 'tv_nsec':500*(10**6), 'tv_accuracy':0.0}
29

    
30
    events = []
31
    while True:
32

    
33
        # This could return a None, after the specified timeout
34
        event = gdp.GDP_GCL.get_next_event(t)
35
        if event is None: break
36
        events.append(event)
37

    
38

    
39
    event_dict = { 1: "GDP_EVENT_DATA", 2: "GDP_EVENT_EOS" }
40
    event_types = [event_dict[t["type"]] for t in events]
41
    print "Sequence of events returned:"
42
    for t in event_types: print t
43
    print "Total events: %d" % len(events)
44

    
45

    
46
if __name__ == "__main__":
47

    
48
    if len(sys.argv) < 4:
49
        print "Usage: %s <gcl-name> <start-recno> <stop-recno>" % sys.argv[0]
50
        sys.exit(1)
51

    
52
    # Change this to point to a gdp_router
53
    gdp.gdp_init()
54
    gdp.dbg_set("gdp.event=70")
55
    gdp.dbg_set("gdp.main=55")
56
    main(sys.argv[1], int(sys.argv[2]), int(sys.argv[3]))