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
|
#include "Aria.h"
#include "ArNetworking.h"
ArClientFileLister *fileLister;
ArClientFileToClient *fileToClient;
ArClientFileFromClient *fileFromClient;
ArClientDeleteFileOnServer *deleteFileOnServer;
bool done = false;
void updated(int ret)
{
done = true;
if (ret == 0)
fileLister->log(false);
else
printf("Bad update %d\n", ret);
}
void fileReceived(int ret)
{
done = true;
if (ret == 0)
printf("Got file '%s'\n", fileToClient->getFileName());
else
printf("Didn't get file '%s' because %d\n", fileToClient->getFileName(),
ret);
}
void fileSent(int ret)
{
done = true;
if (ret == 0)
printf("Sent file '%s'\n", fileFromClient->getFileName());
else
printf("Didn't send file '%s' because %d\n",
fileFromClient->getFileName(),
ret);
}
void fileDeleted(int ret)
{
done = true;
if (ret == 0)
printf("Deleted file '%s'\n", deleteFileOnServer->getFileName());
else
printf("Didn't delete file '%s' because %d\n",
deleteFileOnServer->getFileName(),
ret);
}
void waitForDone(void)
{
while (!done && Aria::getRunning())
ArUtil::sleep(1);
done = false;
}
int main(int argc, char **argv)
{
std::string hostname;
Aria::init();
//ArLog::init(ArLog::StdOut, ArLog::Verbose);
ArClientBase client;
ArArgumentParser parser(&argc, argv);
ArClientSimpleConnector clientConnector(&parser);
parser.loadDefaultArguments();
ArClientFileFromClient::SendSpeed speed = ArClientFileFromClient::SPEED_AUTO;
if (parser.checkArgument("-speed_fast"))
{
ArLog::log(ArLog::Normal, "Putting file with speed_fast");
speed = ArClientFileFromClient::SPEED_FAST;
}
else if (parser.checkArgument("-speed_slow"))
{
ArLog::log(ArLog::Normal, "Putting file with speed_slow");
speed = ArClientFileFromClient::SPEED_SLOW;
}
else
{
ArLog::log(ArLog::Normal, "Putting file with speed_auto");
}
bool pauseAfterSend;
if (parser.checkArgument("-pauseAfterSend"))
{
ArLog::log(ArLog::Normal, "Will pause after send");
pauseAfterSend = true;
}
else
{
ArLog::log(ArLog::Normal, "Will not pause after send");
pauseAfterSend = false;
}
/* Check for -help, and unhandled arguments: */
if (!Aria::parseArgs() || !parser.checkHelpAndWarnUnparsed(1) ||
parser.getArgc() <= 1)
{
ArLog::log(ArLog::Normal, "%s <fileName> [-speed_fast] [-speed_slow] [-pauseAfterSend]",
argv[0]);
ArLog::log(ArLog::Normal, "Default send speed is speed_auto");
ArLog::log(ArLog::Normal, "");
Aria::logOptions();
exit(0);
}
const char *fileName = parser.getArg(1);
/* Connect our client object to the remote server: */
if (!clientConnector.connectClient(&client))
{
if (client.wasRejected())
printf("Server '%s' rejected connection, exiting\n", client.getHost());
else
printf("Could not connect to server '%s', exiting\n", client.getHost());
exit(1);
}
fileFromClient = new ArClientFileFromClient(&client);
fileFromClient->addFileSentCallback(
new ArGlobalFunctor1<int>(&fileSent));
client.runAsync();
done = false;
if (!fileFromClient->putFileToDirectory(NULL, fileName, fileName,
speed))
{
printf("Error before sending file\n");
Aria::exit(1);
}
waitForDone();
if (pauseAfterSend)
ArUtil::sleep(10000);
Aria::exit(0);
return 255;
}
|