instrumentation: add next-share/
[cs-p2p-next.git] / instrumentation / next-share / BaseLib / Tools / bitbucket-live.py
1 import sys
2 import time
3 from traceback import print_exc
4
5 from BaseLib.Core.API import *
6
7 DEBUG = False
8
9
10 def vod_event_callback(d,event,params):
11     if event == VODEVENT_START:
12         stream = params["stream"]
13
14         epoch_server = None
15         epoch_local = time.time()
16         blocksize = d.get_def().get_piece_length()
17         while True:
18             stream.read(blocksize)
19             last_ts = stream.get_generation_time()
20
21             if epoch_server is None:
22                 if DEBUG:
23                     print >>sys.stderr, "bitbucket: received first data."
24                 epoch_server = last_ts
25
26             age_server = last_ts - epoch_server
27             age_local  = time.time() - epoch_local
28
29             # if server is younger, wait up to sync
30             waittime = max( 0, age_server - age_local )
31             if DEBUG:
32                 print >>sys.stderr, "bitbucket: sleeping %.2f seconds. we're at time %.2f, piece has age %.2f" % (waittime,age_local,age_server)
33             time.sleep( waittime )
34
35
36 def state_callback(ds):
37     try:
38         d = ds.get_download()
39         p = "%.0f %%" % (100.0*ds.get_progress())
40         dl = "dl %.0f" % (ds.get_current_speed(DOWNLOAD))
41         ul = "ul %.0f" % (ds.get_current_speed(UPLOAD))
42         print >>sys.stderr,dlstatus_strings[ds.get_status() ],p,dl,ul,"====="
43     except:
44         print_exc()
45
46     return (1.0,False)
47
48
49
50 scfg = SessionStartupConfig()
51 scfg.set_megacache( False )
52 scfg.set_overlay( False )
53
54 s = Session( scfg )
55 tdef = TorrentDef.load(sys.argv[1])
56 dscfg = DownloadStartupConfig()
57 dscfg.set_video_event_callback( vod_event_callback )
58 dscfg.set_max_uploads(16)
59
60 d = s.start_download( tdef, dscfg )
61
62 d.set_state_callback(state_callback,getpeerlist=False)
63
64 while True:
65   time.sleep(60)
66