Commit ffbca4e1 authored by Gabriel Margiani's avatar Gabriel Margiani

Verbose modus for client

parent 3d6f267f
...@@ -43,7 +43,7 @@ std::map<std::string, std::string> p3::client::command_shorthands { ...@@ -43,7 +43,7 @@ std::map<std::string, std::string> p3::client::command_shorthands {
{"x", "exit"} {"x", "exit"}
}; };
p3::client::client(int ac, char *av[]) : argv(av, av+ac), interactive(false) { p3::client::client(int ac, char *av[]) : argv(av, av+ac), interactive(false), verbose(false) {
argv.pop_front(); argv.pop_front();
auto i = std::find(argv.begin(), argv.end(), "-I"); auto i = std::find(argv.begin(), argv.end(), "-I");
if (i != argv.end()) { if (i != argv.end()) {
...@@ -51,6 +51,12 @@ p3::client::client(int ac, char *av[]) : argv(av, av+ac), interactive(false) { ...@@ -51,6 +51,12 @@ p3::client::client(int ac, char *av[]) : argv(av, av+ac), interactive(false) {
argv.erase(i); argv.erase(i);
} }
i = std::find(argv.begin(), argv.end(), "-v");
if (i != argv.end()) {
verbose = true;
argv.erase(i);
}
std::random_device rd; std::random_device rd;
std::default_random_engine e(rd()); std::default_random_engine e(rd());
std::uniform_int_distribution<int> uniform_dist(200, 900); std::uniform_int_distribution<int> uniform_dist(200, 900);
...@@ -58,10 +64,10 @@ p3::client::client(int ac, char *av[]) : argv(av, av+ac), interactive(false) { ...@@ -58,10 +64,10 @@ p3::client::client(int ac, char *av[]) : argv(av, av+ac), interactive(false) {
connection = nullptr; connection = nullptr;
try { try {
std::cout << "connecting..." << std::endl; if (verbose) std::cout << "connecting..." << std::endl;
p3::mQueue ma(p3::mQueue::DefaultId, false); p3::mQueue ma(p3::mQueue::DefaultId, false, verbose);
connection = new mQueue(id, true); connection = new mQueue(id, true, verbose);
ma.send(p3::protocol::HELLO, id); ma.send(p3::protocol::HELLO, id);
p3::mQueueMessage m = connection->receive(30); p3::mQueueMessage m = connection->receive(30);
......
...@@ -54,6 +54,7 @@ namespace p3 { ...@@ -54,6 +54,7 @@ namespace p3 {
}; };
bool interactive; bool interactive;
bool verbose;
std::string get_input(std::string question, inputType is_command); std::string get_input(std::string question, inputType is_command);
......
...@@ -50,7 +50,8 @@ void print_usage() { ...@@ -50,7 +50,8 @@ void print_usage() {
<< "p3 t ransfer [id] [nr] - forward call" << std::endl << "p3 t ransfer [id] [nr] - forward call" << std::endl
<< "p3 d tmf [dgts] [id] - dial dtfm digits" << std::endl << "p3 d tmf [dgts] [id] - dial dtfm digits" << std::endl
<< "p3 r ecord [file] - record" << std::endl << "p3 r ecord [file] - record" << std::endl
<< "-I for an interactive shell" << std::endl; << "-I for an interactive shell" << std::endl
<< "-v for verbose output (not with serve)" << std::endl;
} }
int run_server() { int run_server() {
......
...@@ -27,9 +27,11 @@ const bool p3::mQueue::Create = true; ...@@ -27,9 +27,11 @@ const bool p3::mQueue::Create = true;
const int p3::mQueue::DefaultSendTimeout = 10; /* 10sec timeout... */ const int p3::mQueue::DefaultSendTimeout = 10; /* 10sec timeout... */
const char * p3::mQueue::DefaultId = "p3Main"; const char * p3::mQueue::DefaultId = "p3Main";
p3::mQueue::mQueue(const std::string& id, bool c) { p3::mQueue::mQueue(const std::string& id, bool c, bool p) :
delOnDestruct = c; key("/p3::mQueue!" + id),
key = "/p3::mQueue!" + id; delOnDestruct(c),
printConversation(p)
{
int flags = 0; int flags = 0;
if (c) { if (c) {
...@@ -98,7 +100,7 @@ void p3::mQueue::send(p3::protocol c, const std::string& v) { ...@@ -98,7 +100,7 @@ void p3::mQueue::send(p3::protocol c, const std::string& v) {
void p3::mQueue::send(const p3::mQueueMessage & qmsg) { void p3::mQueue::send(const p3::mQueueMessage & qmsg) {
std::string msg = qmsg.get_str(); std::string msg = qmsg.get_str();
std::cout << "S: " << key << ": " << msg << std::endl; if (printConversation) std::cout << "S: " << key << ": " << msg << std::endl;
timespec tsp; timespec tsp;
tsp.tv_sec = time(NULL) + DefaultSendTimeout; tsp.tv_sec = time(NULL) + DefaultSendTimeout;
tsp.tv_nsec = 0; tsp.tv_nsec = 0;
...@@ -132,7 +134,7 @@ p3::mQueueMessage p3::mQueue::receive(int timeout) { ...@@ -132,7 +134,7 @@ p3::mQueueMessage p3::mQueue::receive(int timeout) {
if (ret != -1) { if (ret != -1) {
buf[ret] = '\0'; buf[ret] = '\0';
p3::mQueueMessage ret(buf); p3::mQueueMessage ret(buf);
std::cout << "R: " << key << ": " << ret.get_value() << std::endl; if (printConversation) std::cout << "R: " << key << ": " << ret.get_value() << std::endl;
return ret; return ret;
} else { } else {
switch (errno) { switch (errno) {
......
...@@ -65,6 +65,8 @@ namespace p3 { ...@@ -65,6 +65,8 @@ namespace p3 {
bool delOnDestruct; bool delOnDestruct;
bool printConversation;
public: public:
static const bool Create; static const bool Create;
static const int DefaultSendTimeout; static const int DefaultSendTimeout;
...@@ -73,7 +75,7 @@ namespace p3 { ...@@ -73,7 +75,7 @@ namespace p3 {
// create implies delete on destruct, only use it on // create implies delete on destruct, only use it on
// one side of the connection. Remember to inform // one side of the connection. Remember to inform
// the other party before closing a connection // the other party before closing a connection
mQueue(const std::string& id, bool create = false); mQueue(const std::string& id, bool create = false, bool printConversation = true);
~mQueue(); ~mQueue();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment