FileCatalyst Development Kit
File transfers were susceptible to network impairments, especially when transferring overseas. With minimal effort, we were able to plug in FileCatalyst. The performance gains were immediate.
—Steve Emerson, President, Turning Point Integration
FileCatalyst provides many options for integration into 3rd party applications and workflows. Java developers can work directly with the FileCatalyst Client and Server APIs, while other developers can take advantage of the Java applets, .NET wrapper, Command Line Interface or Web Services.
The Development Kit is by necessity an extension of the accelerated FileCatalyst Server; if you own any qualifying products, the Development Kit may be licensed as an add-on. For standalone development, the SDK is typically added on to FileCatalyst Direct, which is the product included in the free trial.
Client API
Our well-documented API gives access to every method needed to establish a connection to a FileCatalyst Server for accelerated file transfers. With a few short lines of code, you can be underway. Default values are used for most functions, with a full range of method calls allowing you to access advanced features.
See Simple Java Sample
|
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 |
<span style='color:#800000; font-weight:bold; '>import</span><span style='color:#004a43; '> unlimited</span><span style='color:#808030; '>.</span><span style='color:#004a43; '>fc</span><span style='color:#808030; '>.</span><span style='color:#004a43; '>client</span><span style='color:#808030; '>.</span><span style='color:#004a43; '>api</span><span style='color:#808030; '>.</span><span style='color:#800000; font-weight:bold; '>*</span><span style='color:#800080; '>;</span>
<span style='color:#800000; font-weight:bold; '>import</span><span style='color:#004a43; '> java</span><span style='color:#808030; '>.</span><span style='color:#004a43; '>io</span><span style='color:#808030; '>.</span><span style='color:#800000; font-weight:bold; '>*</span><span style='color:#800080; '>;</span>
<span style='color:#800000; font-weight:bold; '>public</span> <span style='color:#800000; font-weight:bold; '>class</span> UploadSample <span style='color:#800080; '>{</span>
<span style='color:#800000; font-weight:bold; '>public</span> <span style='color:#800000; font-weight:bold; '>static</span> <span style='color:#bb7977; '>void</span> main<span style='color:#808030; '>(</span><span style='color:#bb7977; font-weight:bold; '>String</span> args<span style='color:#808030; '>[</span><span style='color:#808030; '>]</span><span style='color:#808030; '>)</span> <span style='color:#800000; font-weight:bold; '>throws</span> <span style='color:#bb7977; font-weight:bold; '>Exception</span> <span style='color:#800080; '>{</span>
FCClient fc <span style='color:#808030; '>=</span> <span style='color:#800000; font-weight:bold; '>new</span> FCClient<span style='color:#808030; '>(</span><span style='color:#0000e6; '>"192.168.1.30"</span><span style='color:#808030; '>,</span><span style='color:#008c00; '>21</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
fc<span style='color:#808030; '>.</span>setShowConsoleLog<span style='color:#808030; '>(</span><span style='color:#800000; font-weight:bold; '>true</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
fc<span style='color:#808030; '>.</span>initialize<span style='color:#808030; '>(</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
fc<span style='color:#808030; '>.</span>connect<span style='color:#808030; '>(</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
fc<span style='color:#808030; '>.</span>login<span style='color:#808030; '>(</span><span style='color:#0000e6; '>"anonymous"</span><span style='color:#808030; '>,</span> <span style='color:#0000e6; '>"me@email.com"</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
fc<span style='color:#808030; '>.</span>setMode<span style='color:#808030; '>(</span>TransferMode<span style='color:#808030; '>.</span>UDP<span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
<span style='color:#696969; '>//Set the start rate and target rate the same. It will slow down if congestion encountered.</span>
fc<span style='color:#808030; '>.</span>setStartRate<span style='color:#808030; '>(</span><span style='color:#008c00; '>10000</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
fc<span style='color:#808030; '>.</span>setTargetRate<span style='color:#808030; '>(</span><span style='color:#008c00; '>10000</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
fc<span style='color:#808030; '>.</span>setVerifyIntegrity<span style='color:#808030; '>(</span><span style='color:#800000; font-weight:bold; '>true</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
TransferHook upload <span style='color:#808030; '>=</span> fc<span style='color:#808030; '>.</span>upload<span style='color:#808030; '>(</span><span style='color:#800000; font-weight:bold; '>new</span> <span style='color:#bb7977; font-weight:bold; '>File</span><span style='color:#808030; '>(</span><span style='color:#0000e6; '>"c:/temp/500MB.zip"</span><span style='color:#808030; '>)</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
<span style='color:#800000; font-weight:bold; '>while</span> <span style='color:#808030; '>(</span><span style='color:#808030; '>!</span>upload<span style='color:#808030; '>.</span>isTransferComplete<span style='color:#808030; '>(</span><span style='color:#808030; '>)</span><span style='color:#808030; '>)</span> <span style='color:#800080; '>{</span>
<span style='color:#696969; '>// you could display some progress information here using the various methods in</span>
<span style='color:#696969; '>// the TransferHook object</span>
<span style='color:#800000; font-weight:bold; '>if</span> <span style='color:#808030; '>(</span>upload<span style='color:#808030; '>.</span>getStatusCode<span style='color:#808030; '>(</span><span style='color:#808030; '>)</span><span style='color:#808030; '>=</span><span style='color:#808030; '>=</span>upload<span style='color:#808030; '>.</span>TRANSFERRING<span style='color:#808030; '>)</span> <span style='color:#800080; '>{</span>
<span style='color:#bb7977; font-weight:bold; '>System</span><span style='color:#808030; '>.</span>out<span style='color:#808030; '>.</span>println<span style='color:#808030; '>(</span>upload<span style='color:#808030; '>.</span>getPercent<span style='color:#808030; '>(</span><span style='color:#808030; '>)</span> <span style='color:#808030; '>+</span> <span style='color:#0000e6; '>"% "</span><span style='color:#808030; '>+</span>upload<span style='color:#808030; '>.</span>getRate<span style='color:#808030; '>(</span><span style='color:#808030; '>)</span><span style='color:#808030; '>+</span><span style='color:#0000e6; '>" Kbps"</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
<span style='color:#800080; '>}</span>
<span style='color:#800000; font-weight:bold; '>try</span> <span style='color:#800080; '>{</span>
<span style='color:#bb7977; font-weight:bold; '>Thread</span><span style='color:#808030; '>.</span>sleep<span style='color:#808030; '>(</span><span style='color:#008c00; '>1000</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
<span style='color:#800080; '>}</span>
<span style='color:#800000; font-weight:bold; '>catch</span> <span style='color:#808030; '>(</span><span style='color:#bb7977; font-weight:bold; '>InterruptedException</span> ex<span style='color:#808030; '>)</span> <span style='color:#800080; '>{</span>
<span style='color:#800080; '>}</span>
<span style='color:#800080; '>}</span>
<span style='color:#696969; '>// disconnect from the server</span>
fc<span style='color:#808030; '>.</span>disconnect<span style='color:#808030; '>(</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
<span style='color:#696969; '>// clean up</span>
fc<span style='color:#808030; '>.</span>finish<span style='color:#808030; '>(</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
<span style='color:#800080; '>}</span>
<span style='color:#800080; '>}</span> |
See Advanced Java Sample (using observables)
|
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 |
<span style='color:#800000; font-weight:bold; '>import</span><span style='color:#004a43; '> unlimited</span><span style='color:#808030; '>.</span><span style='color:#004a43; '>fc</span><span style='color:#808030; '>.</span><span style='color:#004a43; '>client</span><span style='color:#808030; '>.</span><span style='color:#004a43; '>api</span><span style='color:#808030; '>.</span><span style='color:#800000; font-weight:bold; '>*</span><span style='color:#800080; '>;</span>
<span style='color:#800000; font-weight:bold; '>import</span><span style='color:#004a43; '> java</span><span style='color:#808030; '>.</span><span style='color:#004a43; '>io</span><span style='color:#808030; '>.</span><span style='color:#800000; font-weight:bold; '>*</span><span style='color:#800080; '>;</span>
<span style='color:#800000; font-weight:bold; '>import</span><span style='color:#004a43; '> java</span><span style='color:#808030; '>.</span><span style='color:#004a43; '>util</span><span style='color:#808030; '>.</span><span style='color:#800000; font-weight:bold; '>*</span><span style='color:#800080; '>;</span>
<span style='color:#800000; font-weight:bold; '>import</span><span style='color:#004a43; '> java</span><span style='color:#808030; '>.</span><span style='color:#004a43; '>util</span><span style='color:#808030; '>.</span><span style='color:#004a43; '>Observable</span><span style='color:#800080; '>;</span>
<span style='color:#800000; font-weight:bold; '>import</span><span style='color:#004a43; '> java</span><span style='color:#808030; '>.</span><span style='color:#004a43; '>io</span><span style='color:#808030; '>.</span><span style='color:#004a43; '>IOException</span><span style='color:#800080; '>;</span>
<span style='color:#800000; font-weight:bold; '>import</span><span style='color:#004a43; '> unlimited</span><span style='color:#808030; '>.</span><span style='color:#004a43; '>fc</span><span style='color:#808030; '>.</span><span style='color:#004a43; '>com</span><span style='color:#808030; '>.</span><span style='color:#004a43; '>FCException</span><span style='color:#800080; '>;</span>
<span style='color:#3f5fbf; '>/**</span>
<span style='color:#3f5fbf; '> </span><span style='color:#7f9fbf; font-weight:bold; '>*</span><span style='color:#3f5fbf; '> This example illustrates the use of Observables to monitor a TransferHook object.</span>
<span style='color:#3f5fbf; '> */</span>
<span style='color:#800000; font-weight:bold; '>public</span> <span style='color:#800000; font-weight:bold; '>class</span> UploadSampleAdvanced <span style='color:#800000; font-weight:bold; '>implements</span> Observer <span style='color:#800080; '>{</span>
TransferHook upload <span style='color:#808030; '>=</span> <span style='color:#800000; font-weight:bold; '>null</span><span style='color:#800080; '>;</span>
<span style='color:#800000; font-weight:bold; '>public</span> <span style='color:#bb7977; '>void</span> go<span style='color:#808030; '>(</span><span style='color:#808030; '>)</span> <span style='color:#800000; font-weight:bold; '>throws</span> <span style='color:#bb7977; font-weight:bold; '>IOException</span><span style='color:#808030; '>,</span> FCException <span style='color:#800080; '>{</span>
FCClient fc <span style='color:#808030; '>=</span> <span style='color:#800000; font-weight:bold; '>new</span> FCClient<span style='color:#808030; '>(</span><span style='color:#0000e6; '>"192.168.1.30"</span><span style='color:#808030; '>,</span> <span style='color:#008c00; '>2057</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
fc<span style='color:#808030; '>.</span>setShowConsoleLog<span style='color:#808030; '>(</span><span style='color:#800000; font-weight:bold; '>true</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
fc<span style='color:#808030; '>.</span>initialize<span style='color:#808030; '>(</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
fc<span style='color:#808030; '>.</span>connect<span style='color:#808030; '>(</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
fc<span style='color:#808030; '>.</span>login<span style='color:#808030; '>(</span><span style='color:#0000e6; '>"anonymous"</span><span style='color:#808030; '>,</span> <span style='color:#0000e6; '>"me@email.com"</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
<span style='color:#696969; '>// Let's auto detect the transfer mode. Unless RTT is high enough, FTP gets used.</span>
fc<span style='color:#808030; '>.</span>setMode<span style='color:#808030; '>(</span>TransferMode<span style='color:#808030; '>.</span>AUTO<span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
<span style='color:#696969; '>// lets send at a constant 1500 Kbps, no congestion control.</span>
<span style='color:#696969; '>// the congestion control only comes into play if FC gets detected as the best transfer mode</span>
fc<span style='color:#808030; '>.</span>setUseCongestionControl<span style='color:#808030; '>(</span><span style='color:#800000; font-weight:bold; '>false</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
fc<span style='color:#808030; '>.</span>setTargetRate<span style='color:#808030; '>(</span><span style='color:#008c00; '>1500</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
<span style='color:#696969; '>// verify the file afterwards</span>
fc<span style='color:#808030; '>.</span>setVerifyIntegrity<span style='color:#808030; '>(</span><span style='color:#800000; font-weight:bold; '>true</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
upload <span style='color:#808030; '>=</span> fc<span style='color:#808030; '>.</span>upload<span style='color:#808030; '>(</span><span style='color:#800000; font-weight:bold; '>new</span> <span style='color:#bb7977; font-weight:bold; '>File</span><span style='color:#808030; '>(</span><span style='color:#0000e6; '>"c:/bigfiles/500MB"</span><span style='color:#808030; '>)</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
upload<span style='color:#808030; '>.</span>addObserver<span style='color:#808030; '>(</span><span style='color:#800000; font-weight:bold; '>this</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
<span style='color:#800000; font-weight:bold; '>try</span> <span style='color:#800080; '>{</span>
<span style='color:#800000; font-weight:bold; '>synchronized</span> <span style='color:#808030; '>(</span><span style='color:#800000; font-weight:bold; '>this</span><span style='color:#808030; '>)</span> <span style='color:#800080; '>{</span>
wait<span style='color:#808030; '>(</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
<span style='color:#800080; '>}</span>
<span style='color:#800080; '>}</span>
<span style='color:#800000; font-weight:bold; '>catch</span> <span style='color:#808030; '>(</span><span style='color:#bb7977; font-weight:bold; '>InterruptedException</span> ex<span style='color:#808030; '>)</span> <span style='color:#800080; '>{</span>
<span style='color:#800080; '>}</span>
<span style='color:#696969; '>// disconnect from the server</span>
fc<span style='color:#808030; '>.</span>disconnect<span style='color:#808030; '>(</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
<span style='color:#696969; '>// clean up</span>
fc<span style='color:#808030; '>.</span>finish<span style='color:#808030; '>(</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
<span style='color:#800080; '>}</span>
<span style='color:#800000; font-weight:bold; '>public</span> <span style='color:#bb7977; '>void</span> update<span style='color:#808030; '>(</span><span style='color:#bb7977; font-weight:bold; '>Observable</span> observable<span style='color:#808030; '>,</span> <span style='color:#bb7977; font-weight:bold; '>Object</span> object<span style='color:#808030; '>)</span> <span style='color:#800080; '>{</span>
<span style='color:#800000; font-weight:bold; '>if</span> <span style='color:#808030; '>(</span><span style='color:#808030; '>!</span>upload<span style='color:#808030; '>.</span>isTransferComplete<span style='color:#808030; '>(</span><span style='color:#808030; '>)</span> <span style='color:#808030; '>&</span><span style='color:#808030; '>&</span> <span style='color:#808030; '>!</span>upload<span style='color:#808030; '>.</span>isTransferCancelled<span style='color:#808030; '>(</span><span style='color:#808030; '>)</span> <span style='color:#808030; '>&</span><span style='color:#808030; '>&</span>
<span style='color:#808030; '>!</span>upload<span style='color:#808030; '>.</span>isTransferError<span style='color:#808030; '>(</span><span style='color:#808030; '>)</span><span style='color:#808030; '>)</span> <span style='color:#800080; '>{</span>
<span style='color:#800000; font-weight:bold; '>if</span> <span style='color:#808030; '>(</span>upload<span style='color:#808030; '>.</span>getStatusCode<span style='color:#808030; '>(</span><span style='color:#808030; '>)</span> <span style='color:#808030; '>=</span><span style='color:#808030; '>=</span> upload<span style='color:#808030; '>.</span>TRANSFERRING <span style='color:#808030; '>&</span><span style='color:#808030; '>&</span>
upload<span style='color:#808030; '>.</span>getCurrentPercent<span style='color:#808030; '>(</span><span style='color:#808030; '>)</span> <span style='color:#808030; '>!</span><span style='color:#808030; '>=</span> <span style='color:#008c00; '>100</span><span style='color:#808030; '>)</span> <span style='color:#800080; '>{</span>
printProgress<span style='color:#808030; '>(</span>upload<span style='color:#808030; '>.</span>getRate<span style='color:#808030; '>(</span><span style='color:#808030; '>)</span><span style='color:#808030; '>,</span> upload<span style='color:#808030; '>.</span>getCurrentPercent<span style='color:#808030; '>(</span><span style='color:#808030; '>)</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
<span style='color:#800080; '>}</span>
<span style='color:#800000; font-weight:bold; '>else</span> <span style='color:#800000; font-weight:bold; '>if</span> <span style='color:#808030; '>(</span>upload<span style='color:#808030; '>.</span>getStatusCode<span style='color:#808030; '>(</span><span style='color:#808030; '>)</span> <span style='color:#808030; '>=</span><span style='color:#808030; '>=</span> upload<span style='color:#808030; '>.</span>DONEFILE<span style='color:#808030; '>)</span> <span style='color:#800080; '>{</span>
printProgress<span style='color:#808030; '>(</span>upload<span style='color:#808030; '>.</span>getRate<span style='color:#808030; '>(</span><span style='color:#808030; '>)</span><span style='color:#808030; '>,</span> <span style='color:#008c00; '>100</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
<span style='color:#800080; '>}</span>
<span style='color:#800080; '>}</span>
<span style='color:#800000; font-weight:bold; '>else</span> <span style='color:#800080; '>{</span>
<span style='color:#696969; '>// all files complete</span>
<span style='color:#800000; font-weight:bold; '>synchronized</span> <span style='color:#808030; '>(</span><span style='color:#800000; font-weight:bold; '>this</span><span style='color:#808030; '>)</span> <span style='color:#800080; '>{</span>
notifyAll<span style='color:#808030; '>(</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
<span style='color:#800080; '>}</span>
<span style='color:#800080; '>}</span>
<span style='color:#800080; '>}</span>
<span style='color:#800000; font-weight:bold; '>public</span> <span style='color:#bb7977; '>void</span> printProgress<span style='color:#808030; '>(</span><span style='color:#bb7977; '>int</span> rate<span style='color:#808030; '>,</span> <span style='color:#bb7977; '>int</span> percent<span style='color:#808030; '>)</span> <span style='color:#800080; '>{</span>
<span style='color:#bb7977; font-weight:bold; '>System</span><span style='color:#808030; '>.</span>out<span style='color:#808030; '>.</span>println<span style='color:#808030; '>(</span>percent <span style='color:#808030; '>+</span> <span style='color:#0000e6; '>"%"</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
<span style='color:#bb7977; font-weight:bold; '>System</span><span style='color:#808030; '>.</span>out<span style='color:#808030; '>.</span>println<span style='color:#808030; '>(</span>rate <span style='color:#808030; '>+</span> <span style='color:#0000e6; '>" kbps"</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
<span style='color:#800080; '>}</span>
<span style='color:#800000; font-weight:bold; '>public</span> <span style='color:#800000; font-weight:bold; '>static</span> <span style='color:#bb7977; '>void</span> main<span style='color:#808030; '>(</span><span style='color:#bb7977; font-weight:bold; '>String</span> args<span style='color:#808030; '>[</span><span style='color:#808030; '>]</span><span style='color:#808030; '>)</span> <span style='color:#800000; font-weight:bold; '>throws</span> <span style='color:#bb7977; font-weight:bold; '>Exception</span> <span style='color:#800080; '>{</span>
<span style='color:#800000; font-weight:bold; '>new</span> UploadSampleAdvanced<span style='color:#808030; '>(</span><span style='color:#808030; '>)</span><span style='color:#808030; '>.</span>go<span style='color:#808030; '>(</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
<span style='color:#800080; '>}</span>
<span style='color:#800080; '>}</span> |
Server API
The new Server API exposes every method needed to manage users, as well as request session information on the FileCatalyst Server
Java Applets
FileCatalyst applets are based on nearly a decade of experience in enabling browser-based file transfer. Web developers can easily embed the applet with a simple <script> tag, and configured with a Javascript file. Use the dynamic language of your choice (PHP, Javascript, ASP) to configure the applets on-demand, or control the upload or download applet with our Javascript API.
See JavaScript/HTML Snippet
|
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 |
<span style='color:#a65700; '><</span><span style='color:#800000; font-weight:bold; '>script</span><span style='color:#a65700; '>></span>
<span style='color:#800000; font-weight:bold; '>var</span> browsePath <span style='color:#808030; '>=</span> <span style='color:#0000e6; '>""</span><span style='color:#800080; '>;</span>
<span style='color:#800000; font-weight:bold; '>function</span> browseAndAdd<span style='color:#808030; '>(</span><span style='color:#808030; '>)</span> <span style='color:#800080; '>{</span>
browsePath <span style='color:#808030; '>=</span> document<span style='color:#808030; '>.</span>FileCatalyst<span style='color:#808030; '>.</span>browseLive<span style='color:#808030; '>(</span><span style='color:#0f4d75; '>true</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
<span style='color:#800080; '>}</span>
<span style='color:#800000; font-weight:bold; '>function</span> upload<span style='color:#808030; '>(</span><span style='color:#808030; '>)</span> <span style='color:#800080; '>{</span>
document<span style='color:#808030; '>.</span>FileCatalyst<span style='color:#808030; '>.</span>uploadLive<span style='color:#808030; '>(</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
<span style='color:#800080; '>}</span>
<span style='color:#800000; font-weight:bold; '>function</span> clearQueue<span style='color:#808030; '>(</span><span style='color:#808030; '>)</span> <span style='color:#800080; '>{</span>
document<span style='color:#808030; '>.</span>FileCatalyst<span style='color:#808030; '>.</span>clearQueue<span style='color:#808030; '>(</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
<span style='color:#800080; '>}</span>
<span style='color:#a65700; '></</span><span style='color:#800000; font-weight:bold; '>script</span><span style='color:#a65700; '>></span>
<span style='color:#696969; '><!--Uses onClick for demonstration only--></span>
<span style='color:#a65700; '><</span><span style='color:#800000; font-weight:bold; '>form</span><span style='color:#274796; '> </span><span style='color:#074726; '>id</span><span style='color:#808030; '>=</span><span style='color:#0000e6; '>"uploadform"</span><span style='color:#a65700; '>></span>
<span style='color:#696969; '><!--Launch a browse dialog and add the selected file to the queue--></span>
<span style='color:#a65700; '><</span><span style='color:#800000; font-weight:bold; '>input</span><span style='color:#274796; '> </span><span style='color:#074726; '>type</span><span style='color:#808030; '>=</span><span style='color:#274796; '>button </span><span style='color:#074726; '>onClick</span><span style='color:#808030; '>=</span><span style='color:#0000e6; '>"javascript:browseAndAdd();"</span><span style='color:#274796; '> </span><span style='color:#074726; '>value</span><span style='color:#808030; '>=</span><span style='color:#0000e6; '>"Browse and Add to Queue"</span><span style='color:#274796; '> </span><span style='color:#a65700; '>/></span>
<span style='color:#696969; '><!-- Force upload of whatever is currently found in the transfer queue --></span>
<span style='color:#a65700; '><</span><span style='color:#800000; font-weight:bold; '>input</span><span style='color:#274796; '> </span><span style='color:#074726; '>type</span><span style='color:#808030; '>=</span><span style='color:#274796; '>button </span><span style='color:#074726; '>onClick</span><span style='color:#808030; '>=</span><span style='color:#0000e6; '>"javascript:upload();"</span><span style='color:#274796; '> </span><span style='color:#074726; '>value</span><span style='color:#808030; '>=</span><span style='color:#0000e6; '>"Upload"</span><span style='color:#a65700; '>></span>
<span style='color:#696969; '><!-- Clear transfer queue (can be called only if no transfers are in progress) --></span>
<span style='color:#a65700; '><</span><span style='color:#800000; font-weight:bold; '>input</span><span style='color:#274796; '> </span><span style='color:#074726; '>type</span><span style='color:#808030; '>=</span><span style='color:#274796; '>button </span><span style='color:#074726; '>onClick</span><span style='color:#808030; '>=</span><span style='color:#0000e6; '>"javascript:clearQueue();"</span><span style='color:#274796; '> </span><span style='color:#074726; '>value</span><span style='color:#808030; '>=</span><span style='color:#0000e6; '>"Clear Queue"</span><span style='color:#a65700; '>></span>
<span style='color:#a65700; '></</span><span style='color:#800000; font-weight:bold; '>form</span><span style='color:#a65700; '>></span> |
Web Services API
The SOAP API sits on top of the Java API, providing a Web Services interface to initiate, control and monitor FileCatalyst transfers. You can use the Web Services if you develop in a language other than Java, or for integration into SOA-based applications. Other features:
- full support for WS-Eventing (server polling is unecessary)
- transfer files from one FileCatalyst Server to another
- 3 installation options: standalone, in a servlet container, or on a J2EE server
Command Line Interface
Using the CLI, access FileCatalyst functionality through virtually any scripting language, or from many other programming languages. Any tool able to output to the command line can be used to trigger FileCatalyst file transfers.
.NET Wrapper
The .NET wrapper offers transparent and thread-safe access to the FileCatalyst command-line in .NET. One potential application is to use FileCatalyst technology to develop within the Microsoft development framework. The .NET wrapper requires an official Java runtime and FileCatalyst CLI.
See .NET SampleC++ Native Client Library
FileCatalyst products are built using Java as the main programming language. This has always allowed us to keep a centralized code base and be compatible across multiple platforms and browsers (via Java Applet Plugin). 95% of systems (desktop/laptop/servers) found on the market today, including Windows, MacOSX, Linux, Solaris, and AIX, can utilize our existing software.
However, there are certain systems where Java is not available. In many set top boxes and embedded systems (network appliance, gaming consoles), Java is not installed or available. This ecosystem was unable to take advantage of our solutions.
In light of this, we have developed a C++ client solution. Available as both a native C++ API or as a native command-line executable (.exe for Windows, 32 or 64-bit binary for Linux), our FileCatalyst C++ client will allow file transfer acceleration on systems that do not have Java installed.
See C++ Sample
|
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 |
<span style='color:#004a43; '>#</span><span style='color:#004a43; '>include </span><span style='color:#800000; '><</span><span style='color:#40015a; '>FileCatalyst.hpp</span><span style='color:#800000; '>></span>
<span style='color:#004a43; '>#</span><span style='color:#004a43; '>include </span><span style='color:#800000; '><</span><span style='color:#40015a; '>iostream</span><span style='color:#800000; '>></span>
<span style='color:#800000; font-weight:bold; '>int</span> <span style='color:#400000; '>main</span><span style='color:#808030; '>(</span> <span style='color:#800000; font-weight:bold; '>int</span> argc<span style='color:#808030; '>,</span> <span style='color:#800000; font-weight:bold; '>char</span> <span style='color:#808030; '>*</span>argv<span style='color:#808030; '>[</span><span style='color:#808030; '>]</span> <span style='color:#808030; '>)</span>
<span style='color:#800080; '>{</span>
<span style='color:#800000; font-weight:bold; '>int</span> rc <span style='color:#808030; '>=</span> <span style='color:#008c00; '>0</span><span style='color:#800080; '>;</span>
<span style='color:#666616; '>std</span><span style='color:#800080; '>::</span><span style='color:#603000; '>cout</span> <span style='color:#808030; '><</span><span style='color:#808030; '><</span> <span style='color:#800000; '>"</span><span style='color:#0000e6; '>Transfer a file and then print out some statistics.</span><span style='color:#800000; '>"</span> <span style='color:#808030; '><</span><span style='color:#808030; '><</span> <span style='color:#666616; '>std</span><span style='color:#800080; '>::</span>endl<span style='color:#800080; '>;</span>
<span style='color:#800000; font-weight:bold; '>try</span>
<span style='color:#800080; '>{</span>
<span style='color:#696969; '>// Setup the FTP connection:</span>
fc<span style='color:#800080; '>::</span>Options options<span style='color:#800080; '>;</span>
options<span style='color:#808030; '>.</span>setFtpServer<span style='color:#808030; '>(</span> <span style='color:#800000; '>"</span><span style='color:#0000e6; '>192.168.1.80</span><span style='color:#800000; '>"</span> <span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
options<span style='color:#808030; '>.</span>setUsernameAndPassword<span style='color:#808030; '>(</span> <span style='color:#800000; '>"</span><span style='color:#0000e6; '>user</span><span style='color:#800000; '>"</span><span style='color:#808030; '>,</span> <span style='color:#800000; '>"</span><span style='color:#0000e6; '>test</span><span style='color:#800000; '>"</span> <span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
options<span style='color:#808030; '>.</span>setBandwidth<span style='color:#808030; '>(</span> <span style='color:#008c00; '>20000</span> <span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
fc<span style='color:#800080; '>::</span>Control ftp<span style='color:#808030; '>(</span> options <span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
ftp<span style='color:#808030; '>.</span><span style='color:#400000; '>connect</span><span style='color:#808030; '>(</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
<span style='color:#696969; '>// Transfer a file via UDP</span>
<span style='color:#666616; '>std</span><span style='color:#800080; '>::</span><span style='color:#603000; '>cout</span> <span style='color:#808030; '><</span><span style='color:#808030; '><</span> <span style='color:#800000; '>"</span><span style='color:#0000e6; '>Downloading a file...</span><span style='color:#800000; '>"</span> <span style='color:#808030; '><</span><span style='color:#808030; '><</span> <span style='color:#666616; '>std</span><span style='color:#800080; '>::</span>endl<span style='color:#800080; '>;</span>
ftp<span style='color:#808030; '>.</span>downloadFile<span style='color:#808030; '>(</span> <span style='color:#800000; '>"</span><span style='color:#0000e6; '>numbers.txt</span><span style='color:#800000; '>"</span><span style='color:#808030; '>,</span> <span style='color:#800000; '>"</span><span style='color:#0000e6; '>numbers.txt</span><span style='color:#800000; '>"</span> <span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
<span style='color:#696969; '>// Display some statistics</span>
<span style='color:#800000; font-weight:bold; '>const</span> fc<span style='color:#800080; '>::</span>TransferStats <span style='color:#808030; '>&</span>stats <span style='color:#808030; '>=</span> ftp<span style='color:#808030; '>.</span>getTransferStats<span style='color:#808030; '>(</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
<span style='color:#666616; '>std</span><span style='color:#800080; '>::</span><span style='color:#603000; '>cout</span> <span style='color:#808030; '><</span><span style='color:#808030; '><</span> <span style='color:#800000; '>"</span><span style='color:#0000e6; '>Timestamp (begin): </span><span style='color:#800000; '>"</span> <span style='color:#808030; '><</span><span style='color:#808030; '><</span> stats<span style='color:#808030; '>.</span>timeTransferBegan <span style='color:#808030; '><</span><span style='color:#808030; '><</span> <span style='color:#666616; '>std</span><span style='color:#800080; '>::</span>endl
<span style='color:#808030; '><</span><span style='color:#808030; '><</span> <span style='color:#800000; '>"</span><span style='color:#0000e6; '>Timestamp (finish): </span><span style='color:#800000; '>"</span> <span style='color:#808030; '><</span><span style='color:#808030; '><</span> stats<span style='color:#808030; '>.</span>timePreviousBlockFinished <span style='color:#808030; '><</span><span style='color:#808030; '><</span> <span style='color:#666616; '>std</span><span style='color:#800080; '>::</span>endl
<span style='color:#808030; '><</span><span style='color:#808030; '><</span> <span style='color:#800000; '>"</span><span style='color:#0000e6; '>Blocks remaining: </span><span style='color:#800000; '>"</span> <span style='color:#808030; '><</span><span style='color:#808030; '><</span> stats<span style='color:#808030; '>.</span>blocksRemaining <span style='color:#808030; '><</span><span style='color:#808030; '><</span> <span style='color:#666616; '>std</span><span style='color:#800080; '>::</span>endl
<span style='color:#808030; '><</span><span style='color:#808030; '><</span> <span style='color:#800000; '>"</span><span style='color:#0000e6; '>Blocks completed: </span><span style='color:#800000; '>"</span> <span style='color:#808030; '><</span><span style='color:#808030; '><</span> stats<span style='color:#808030; '>.</span>blocksCompleted <span style='color:#808030; '><</span><span style='color:#808030; '><</span> <span style='color:#666616; '>std</span><span style='color:#800080; '>::</span>endl
<span style='color:#808030; '><</span><span style='color:#808030; '><</span> <span style='color:#800000; '>"</span><span style='color:#0000e6; '>Bytes expected: </span><span style='color:#800000; '>"</span> <span style='color:#808030; '><</span><span style='color:#808030; '><</span> stats<span style='color:#808030; '>.</span>ulPayloadBytesExpected <span style='color:#808030; '><</span><span style='color:#808030; '><</span> <span style='color:#666616; '>std</span><span style='color:#800080; '>::</span>endl
<span style='color:#808030; '><</span><span style='color:#808030; '><</span> <span style='color:#800000; '>"</span><span style='color:#0000e6; '>Bytes received: </span><span style='color:#800000; '>"</span> <span style='color:#808030; '><</span><span style='color:#808030; '><</span> stats<span style='color:#808030; '>.</span>ulPayloadBytesReceived <span style='color:#808030; '><</span><span style='color:#808030; '><</span> <span style='color:#666616; '>std</span><span style='color:#800080; '>::</span>endl
<span style='color:#808030; '><</span><span style='color:#808030; '><</span> <span style='color:#800000; '>"</span><span style='color:#0000e6; '>Packets received from the FTP server: </span><span style='color:#800000; '>"</span> <span style='color:#808030; '><</span><span style='color:#808030; '><</span> stats<span style='color:#808030; '>.</span>ulPacketsReceived <span style='color:#808030; '><</span><span style='color:#808030; '><</span> <span style='color:#666616; '>std</span><span style='color:#800080; '>::</span>endl
<span style='color:#808030; '><</span><span style='color:#808030; '><</span> <span style='color:#800000; '>"</span><span style='color:#0000e6; '>Packets sent to the FTP server: </span><span style='color:#800000; '>"</span> <span style='color:#808030; '><</span><span style='color:#808030; '><</span> stats<span style='color:#808030; '>.</span>ulPacketsSent <span style='color:#808030; '><</span><span style='color:#808030; '><</span> <span style='color:#666616; '>std</span><span style='color:#800080; '>::</span>endl
<span style='color:#808030; '><</span><span style='color:#808030; '><</span> <span style='color:#800000; '>"</span><span style='color:#0000e6; '>Packets dropped due to duplicates received: </span><span style='color:#800000; '>"</span> <span style='color:#808030; '><</span><span style='color:#808030; '><</span> stats<span style='color:#808030; '>.</span>ulDuplicatePacketDropped <span style='color:#808030; '><</span><span style='color:#808030; '><</span> <span style='color:#666616; '>std</span><span style='color:#800080; '>::</span>endl
<span style='color:#808030; '><</span><span style='color:#808030; '><</span> <span style='color:#800000; '>"</span><span style='color:#0000e6; '>Packets that had to be manually requested: </span><span style='color:#800000; '>"</span> <span style='color:#808030; '><</span><span style='color:#808030; '><</span> stats<span style='color:#808030; '>.</span>ulRequestRetransmit <span style='color:#808030; '><</span><span style='color:#808030; '><</span> <span style='color:#666616; '>std</span><span style='color:#800080; '>::</span>endl<span style='color:#800080; '>;</span>
<span style='color:#800080; '>}</span>
<span style='color:#800000; font-weight:bold; '>catch</span><span style='color:#808030; '>(</span> <span style='color:#800000; font-weight:bold; '>const</span> fc<span style='color:#800080; '>::</span>Exception <span style='color:#808030; '>&</span>e <span style='color:#808030; '>)</span>
<span style='color:#800080; '>{</span>
e<span style='color:#808030; '>.</span>display<span style='color:#808030; '>(</span><span style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
rc <span style='color:#808030; '>=</span> <span style='color:#008c00; '>1</span><span style='color:#800080; '>;</span>
<span style='color:#800080; '>}</span>
<span style='color:#800000; font-weight:bold; '>return</span> rc<span style='color:#800080; '>;</span>
<span style='color:#800080; '>}</span> |
We have currently ported the library to the following platforms:
- Mac OSX
- Linux 32 bit
- Linux 64-bit
- Windows 32-bit
- Windows 64-bit
If you require a port to a specific platform, contact us with the details.



















