1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176
|
<!-- This comment will put IE 6, 7 and 8 in quirks mode -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>ARC Graphical Clients: /home/jonas/Development/arc-gui-clients/src/arcstorage-ui/filetransferlist.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javaScript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body onload='searchBox.OnSelectItem(0);'>
<!-- Generated by Doxygen 1.6.1 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="index.html"><span>Main Page</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
<li>
<div id="MSearchBox" class="MSearchBoxInactive">
<img id="MSearchSelect" src="search/search.png"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
alt=""/>
<input type="text" id="MSearchField" value="Search" accesskey="S"
onfocus="searchBox.OnSearchFieldFocus(true)"
onblur="searchBox.OnSearchFieldFocus(false)"
onkeyup="searchBox.OnSearchFieldChange(event)"/>
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
</div>
</li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="files.html"><span>File List</span></a></li>
</ul>
</div>
<h1>/home/jonas/Development/arc-gui-clients/src/arcstorage-ui/filetransferlist.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="preprocessor">#ifndef FILETRANSFERLIST_H</span>
<a name="l00002"></a>00002 <span class="preprocessor"></span><span class="preprocessor">#define FILETRANSFERLIST_H</span>
<a name="l00003"></a>00003 <span class="preprocessor"></span>
<a name="l00004"></a>00004 <span class="preprocessor">#include <QMutex></span>
<a name="l00005"></a>00005 <span class="preprocessor">#include <QList></span>
<a name="l00006"></a>00006 <span class="preprocessor">#include <QHash></span>
<a name="l00007"></a>00007 <span class="preprocessor">#include <QThread></span>
<a name="l00008"></a>00008
<a name="l00009"></a>00009 <span class="preprocessor">#include "filetransfer.h"</span>
<a name="l00010"></a>00010
<a name="l00012"></a><a class="code" href="classFileTransferProcessingThread.html">00012</a> <span class="keyword">class </span><a class="code" href="classFileTransferProcessingThread.html" title="Thread class for driving the FileTransferList.">FileTransferProcessingThread</a> : <span class="keyword">public</span> QThread
<a name="l00013"></a>00013 {
<a name="l00014"></a>00014 Q_OBJECT
<a name="l00015"></a>00015 <span class="keyword">private</span>:
<a name="l00016"></a>00016 <span class="keywordtype">bool</span> m_terminate;
<a name="l00017"></a>00017 <span class="keywordtype">bool</span> m_pause;
<a name="l00018"></a>00018 <span class="keyword">public</span>:
<a name="l00020"></a>00020 <a class="code" href="classFileTransferProcessingThread.html#a48a7607f659e223fd5e9dfe05712d0b4" title="Create a file transfer processing thread.">FileTransferProcessingThread</a>();
<a name="l00021"></a>00021
<a name="l00023"></a>00023 <span class="keywordtype">void</span> <a class="code" href="classFileTransferProcessingThread.html#ae19e65172990cee455f9f206bfedb879" title="Shutdown file transfer processing.">shutdown</a>();
<a name="l00024"></a>00024
<a name="l00026"></a>00026 <span class="keywordtype">void</span> <a class="code" href="classFileTransferProcessingThread.html#ab43b0307f39d5b7d49ddb45bed9c8e8a" title="Pause file transfer processing.">pause</a>();
<a name="l00027"></a>00027
<a name="l00029"></a>00029 <span class="keywordtype">void</span> <a class="code" href="classFileTransferProcessingThread.html#a9d8197dfda062b8ffc5dd686c5686612" title="Resume file transfer processing processing.">resume</a>();
<a name="l00030"></a>00030
<a name="l00031"></a>00031 <span class="keyword">private</span>:
<a name="l00032"></a>00032 <span class="keywordtype">void</span> run();
<a name="l00033"></a>00033 };
<a name="l00034"></a>00034
<a name="l00036"></a><a class="code" href="classFileTransferList.html">00036</a> <span class="keyword">class </span><a class="code" href="classFileTransferList.html" title="Maintains a global file transfer processing list.">FileTransferList</a> : <span class="keyword">public</span> QObject
<a name="l00037"></a>00037 {
<a name="l00038"></a>00038 Q_OBJECT
<a name="l00039"></a>00039 <span class="keyword">private</span>:
<a name="l00040"></a>00040 QList<FileTransfer*> m_transferList;
<a name="l00041"></a>00041 QList<FileTransfer*> m_activeTransferList;
<a name="l00042"></a>00042 QHash<QString, FileTransfer*> m_transferDict;
<a name="l00043"></a>00043 QHash<QString, FileTransfer*> m_activeTransferDict;
<a name="l00044"></a>00044 <a class="code" href="classFileTransferProcessingThread.html" title="Thread class for driving the FileTransferList.">FileTransferProcessingThread</a>* m_fileProcessingThread;
<a name="l00045"></a>00045 QMutex m_accessMutex;
<a name="l00046"></a>00046 <span class="keywordtype">int</span> m_maxTransfers;
<a name="l00047"></a>00047 <span class="keyword">public</span>:
<a name="l00049"></a><a class="code" href="classFileTransferList.html#a46a19ec5aa8cef69d7fa43de260efe6f">00049</a> <span class="keyword">static</span> <a class="code" href="classFileTransferList.html" title="Maintains a global file transfer processing list.">FileTransferList</a>* <a class="code" href="classFileTransferList.html#a46a19ec5aa8cef69d7fa43de260efe6f" title="Returns the global FileTransferList instance.">instance</a>()
<a name="l00050"></a>00050 {
<a name="l00051"></a>00051 <span class="keyword">static</span> QMutex mutex;
<a name="l00052"></a>00052 <span class="keywordflow">if</span> (!m_instance)
<a name="l00053"></a>00053 {
<a name="l00054"></a>00054 mutex.lock();
<a name="l00055"></a>00055
<a name="l00056"></a>00056 <span class="keywordflow">if</span> (!m_instance)
<a name="l00057"></a>00057 m_instance = <span class="keyword">new</span> <a class="code" href="classFileTransferList.html" title="Maintains a global file transfer processing list.">FileTransferList</a>;
<a name="l00058"></a>00058
<a name="l00059"></a>00059 mutex.unlock();
<a name="l00060"></a>00060 }
<a name="l00061"></a>00061
<a name="l00062"></a>00062 <span class="keywordflow">return</span> m_instance;
<a name="l00063"></a>00063 }
<a name="l00064"></a>00064
<a name="l00066"></a><a class="code" href="classFileTransferList.html#a4d134827268a8652edb1272899ed6177">00066</a> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classFileTransferList.html#a4d134827268a8652edb1272899ed6177" title="Shuts down the global FileTransferList instance.">drop</a>()
<a name="l00067"></a>00067 {
<a name="l00068"></a>00068 <span class="keyword">static</span> QMutex mutex;
<a name="l00069"></a>00069 mutex.lock();
<a name="l00070"></a>00070 <span class="keyword">delete</span> m_instance;
<a name="l00071"></a>00071 m_instance = 0;
<a name="l00072"></a>00072 mutex.unlock();
<a name="l00073"></a>00073 }
<a name="l00074"></a>00074
<a name="l00076"></a>00076
<a name="l00080"></a>00080 <span class="keywordtype">void</span> <a class="code" href="classFileTransferList.html#a92ad0c960ff3a7d3a37a28bcd8dd0bbb" title="Drives the file transfer processing.">processTransfers</a>();
<a name="l00081"></a>00081
<a name="l00083"></a>00083 <span class="keywordtype">void</span> <a class="code" href="classFileTransferList.html#a13ab77c4af630e6563f0039f2e24a771" title="Sets the file processing thread used.">setProcessingThread</a>(<a class="code" href="classFileTransferProcessingThread.html" title="Thread class for driving the FileTransferList.">FileTransferProcessingThread</a>* processingThread);
<a name="l00084"></a>00084
<a name="l00086"></a>00086 <span class="keywordtype">void</span> <a class="code" href="classFileTransferList.html#a06757dd68340af3857b3d80fbe647266" title="Adds a FileTransfer object to the list.">addTransfer</a>(<a class="code" href="classFileTransfer.html" title="Represents a single data transfer from one url to another.">FileTransfer</a>* fileTransfer);
<a name="l00087"></a>00087
<a name="l00089"></a>00089 <span class="keywordtype">void</span> <a class="code" href="classFileTransferList.html#ae6d85b1fcf8745ee7845a215c3231bb0" title="Remove a FileTransfer object from the list.">removeTransfer</a>(<a class="code" href="classFileTransfer.html" title="Represents a single data transfer from one url to another.">FileTransfer</a>* fileTransfer);
<a name="l00090"></a>00090
<a name="l00092"></a>00092
<a name="l00096"></a>00096 <a class="code" href="classFileTransfer.html" title="Represents a single data transfer from one url to another.">FileTransfer</a>* <a class="code" href="classFileTransferList.html#a1e3efea6feca070a33cfa06c562db4ee" title="Return a FileTransfer object from the list.">getTransfer</a>(<span class="keywordtype">int</span> i);
<a name="l00097"></a>00097
<a name="l00099"></a>00099 <span class="keywordtype">int</span> <a class="code" href="classFileTransferList.html#a1ad8accb2800e44c09c16fa99a588e50" title="Returns the size of the transfer list.">getTransferCount</a>();
<a name="l00100"></a>00100
<a name="l00102"></a>00102
<a name="l00107"></a>00107 <a class="code" href="classFileTransfer.html" title="Represents a single data transfer from one url to another.">FileTransfer</a>* <a class="code" href="classFileTransferList.html#a1e3efea6feca070a33cfa06c562db4ee" title="Return a FileTransfer object from the list.">getTransfer</a>(QString <span class="keywordtype">id</span>);
<a name="l00108"></a>00108
<a name="l00110"></a>00110
<a name="l00114"></a>00114 <span class="keywordtype">void</span> <a class="code" href="classFileTransferList.html#a0d72c3c65be6dcbaea683e3019f930e8" title="Cancels all idle transfers.">cancelAllTransfers</a>();
<a name="l00115"></a>00115
<a name="l00117"></a>00117
<a name="l00124"></a>00124 <span class="keywordtype">void</span> <a class="code" href="classFileTransferList.html#a6a920922327d51ffa0bab686ad8bdf70" title="Updates the file transfer statistics of a FileTransfer object.">updateStatus</a>(QString <span class="keywordtype">id</span>, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> transferred, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> totalSize);
<a name="l00125"></a>00125
<a name="l00127"></a>00127
<a name="l00131"></a>00131 <span class="keywordtype">void</span> <a class="code" href="classFileTransferList.html#a38b007b915766aa77e9e29e05ea8bd6a" title="Pauses all file transfer processing.">pauseProcessing</a>();
<a name="l00132"></a>00132
<a name="l00134"></a>00134
<a name="l00137"></a>00137 <span class="keywordtype">void</span> <a class="code" href="classFileTransferList.html#a2651f7a2fffd03a606441118cda14159" title="Resumes file transfer processing.">resumeProcessing</a>();
<a name="l00138"></a>00138
<a name="l00139"></a>00139 <span class="keyword">private</span>:
<a name="l00141"></a>00141 <a class="code" href="classFileTransferList.html" title="Maintains a global file transfer processing list.">FileTransferList</a>();
<a name="l00142"></a>00142
<a name="l00143"></a>00143 <a class="code" href="classFileTransferList.html" title="Maintains a global file transfer processing list.">FileTransferList</a>(<span class="keyword">const</span> <a class="code" href="classFileTransferList.html" title="Maintains a global file transfer processing list.">FileTransferList</a> &); <span class="comment">// hide copy constructor</span>
<a name="l00144"></a>00144 <a class="code" href="classFileTransferList.html" title="Maintains a global file transfer processing list.">FileTransferList</a>& operator=(<span class="keyword">const</span> <a class="code" href="classFileTransferList.html" title="Maintains a global file transfer processing list.">FileTransferList</a> &); <span class="comment">// hide assign op</span>
<a name="l00145"></a>00145 <span class="comment">// we leave just the declarations, so the compiler will warn us</span>
<a name="l00146"></a>00146 <span class="comment">// if we try to use those two functions by accident</span>
<a name="l00147"></a>00147
<a name="l00148"></a>00148 <span class="keyword">static</span> <a class="code" href="classFileTransferList.html" title="Maintains a global file transfer processing list.">FileTransferList</a>* m_instance;
<a name="l00149"></a>00149
<a name="l00150"></a>00150 Q_SIGNALS:
<a name="l00152"></a>00152 <span class="keywordtype">void</span> <a class="code" href="classFileTransferList.html#afbdd0388fac6b596890d99ec5f464044" title="This signal is sent when there is updates in file processing.">onUpdateStatus</a>(QString <span class="keywordtype">id</span>);
<a name="l00153"></a>00153
<a name="l00155"></a>00155 <span class="keywordtype">void</span> <a class="code" href="classFileTransferList.html#a17e783d79b2e1da1ddd6b0e9fa96ef3a" title="This signal is sent when a file transfer is added to the list.">onAddTransfer</a>(QString <span class="keywordtype">id</span>);
<a name="l00156"></a>00156
<a name="l00158"></a>00158 <span class="keywordtype">void</span> <a class="code" href="classFileTransferList.html#af811955a9169c82feb92cfec90b75b45" title="This signal is sent when a file transfer is removed from the list.">onRemoveTransfer</a>(QString <span class="keywordtype">id</span>);
<a name="l00159"></a>00159 };
<a name="l00160"></a>00160
<a name="l00161"></a>00161 <span class="preprocessor">#endif // FILETRANSFERLIST_H</span>
</pre></div></div>
<!--- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Variables</a></div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<hr size="1"/><address style="text-align: right;"><small>Generated on 19 Feb 2013 for ARC Graphical Clients by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>
|