X-Git-Url: http://p2p-next.cs.pub.ro/gitweb/?a=blobdiff_plain;f=src%2Flibswift%2Fswift.cpp;h=4bf00b69ba00c4ce18cb01da5f857914a7e5b076;hb=HEAD;hp=c4e5b3bb63598e6022b209f761686ca721ee5ffd;hpb=45963a7511531cd1656ad5d3847d2dafd015c54d;p=swifty.git diff --git a/src/libswift/swift.cpp b/src/libswift/swift.cpp index c4e5b3b..4bf00b6 100644 --- a/src/libswift/swift.cpp +++ b/src/libswift/swift.cpp @@ -27,6 +27,7 @@ int OpenSwiftDirectory(const TCHAR* dirname, Address tracker, bool force_check_d void ReportCallback(int fd, short event, void *arg); void EndCallback(int fd, short event, void *arg); void RescanDirCallback(int fd, short event, void *arg); +void TimerCallback(int fd, short event, void *arg); // Gateway stuff @@ -39,7 +40,7 @@ void CmdGwUpdateDLStatesCallback(); // Global variables -struct event evreport, evrescan, evend; +struct event evreport, evrescan, evend, evtimer; int single_fd = -1; bool file_enable_checkpoint = false; bool file_checkpointed = false; @@ -328,6 +329,9 @@ int main (int argc, char** argv) evtimer_add(&evend, tint2tv(wait_time)); } + evtimer_assign(&evtimer, Channel::evbase, TimerCallback, NULL); + evtimer_add(&evtimer, tint2tv(TIMER_USEC)); + // Enter mainloop, if daemonizing if (wait_time == TINT_NEVER || (long)wait_time > 0) { // Arno: always, for statsgw, rate control, etc. @@ -495,11 +499,13 @@ void ReportCallback(int fd, short event, void *arg) { if (report_progress) { fprintf(stderr, "%s %lli of %lli (seq %lli) %lli dgram %lli bytes up, " \ - "%lli dgram %lli bytes down\n", + "%lli dgram %lli bytes down mptp[send:%lli,%lli;recv:%lli,%lli]\n", IsComplete(single_fd ) ? "DONE" : "done", Complete(single_fd), Size(single_fd), SeqComplete(single_fd), Channel::global_dgrams_up, Channel::global_raw_bytes_up, - Channel::global_dgrams_down, Channel::global_raw_bytes_down ); + Channel::global_dgrams_down, Channel::global_raw_bytes_down, + Channel::global_buffers_up, Channel::global_syscalls_up, + Channel::global_buffers_down, Channel::global_syscalls_down); } FileTransfer *ft = FileTransfer::file(single_fd); @@ -567,6 +573,11 @@ void ReportCallback(int fd, short event, void *arg) { evtimer_add(&evreport, tint2tv(TINT_SEC)); } +void TimerCallback(int fd, short event, void *arg) { + Channel::messageQueue.Flush(); + evtimer_add(&evtimer, tint2tv(TIMER_USEC)); +} + void EndCallback(int fd, short event, void *arg) { // Called when wait timer expires == fixed time daemon event_base_loopexit(Channel::evbase, NULL);