Browse Source

Completed preliminary unit test for Linux.



git-svn-id: https://svn.microneil.com/svn/CodeDweller/branches/adeniz_1@36 d34b734f-a00e-4b39-a726-e4eeb87269ab
adeniz_1
adeniz 10 years ago
parent
commit
655afd029e
2 changed files with 81 additions and 8 deletions
  1. 40
    6
      service.cpp
  2. 41
    2
      service.hpp

+ 40
- 6
service.cpp View File

namespace CodeDweller { namespace CodeDweller {
Service::Service() : Service::Service() :
lastMessage(Message::None) {
pauseReceived(false),
resumeReceived(false),
restartReceived(false),
stopReceived(false) {
} }
int Service::main(int argc, char *argv[]) { int Service::main(int argc, char *argv[]) {
int status; int status;
status = run(); status = run();
// Send a Stop message so that messageThread exits.
pthread_kill(messageThread.native_handle(), SIGTERM);
messageThread.join(); messageThread.join();
return(status); return(status);
stopCallbacks.push_back(stopFunctor); stopCallbacks.push_back(stopFunctor);
} }
bool Service::receivedPause() {
return (pauseReceived);
}
bool Service::receivedResume() {
return (resumeReceived);
}
bool Service::receivedRestart() {
return (restartReceived);
}
bool Service::receivedStop() { bool Service::receivedStop() {
return (Message::Stop == lastMessage);
return (stopReceived);
}
void Service::clearReceivedPause() {
pauseReceived = false;
}
void Service::clearReceivedResume() {
resumeReceived = false;
}
void Service::clearReceivedRestart() {
restartReceived = false;
}
void Service::clearReceivedStop() {
stopReceived = false;
} }
void Service::processMessages() { void Service::processMessages() {
switch (sigNum) { switch (sigNum) {
case SIGTSTP: case SIGTSTP:
lastMessage = Message::Pause;
pauseReceived = true;
break; break;
case SIGCONT: case SIGCONT:
lastMessage = Message::Resume;
resumeReceived = true;
break; break;
case SIGHUP: case SIGHUP:
lastMessage = Message::Restart;
restartReceived = true;
break; break;
case SIGTERM: case SIGTERM:
lastMessage = Message::Stop;
stopReceived = true;
for (auto callback : stopCallbacks) { for (auto callback : stopCallbacks) {
(*callback)(); (*callback)();

+ 41
- 2
service.hpp View File

// //
void onStopCall(Callback *stopFunctor); void onStopCall(Callback *stopFunctor);


/// Check whether Pause was received.
//
// \returns if the Pause message was received, false otherwise.
//
bool receivedPause();

/// Check whether Resume was received.
//
// \returns if the Resume message was received, false otherwise.
//
bool receivedResume();

/// Check whether Restart was received.
//
// \returns if the Restart message was received, false otherwise.
//
bool receivedRestart();

/// Check whether the last message received was Stop. /// Check whether the last message received was Stop.
// //
// \returns true if Stop was the most recent message received, // \returns true if Stop was the most recent message received,
// //
bool receivedStop(); bool receivedStop();


/// Clear receiving the Pause message.
void clearReceivedPause();

/// Clear receiving the Resume message.
void clearReceivedResume();

/// Clear receiving the Restart message.
void clearReceivedRestart();

/// Clear receiving the Stop message.
void clearReceivedStop();

/// Get a reference to the command-line arguments. /// Get a reference to the command-line arguments.
// //
// \returns a reference to the vector of command-line arguments of // \returns a reference to the vector of command-line arguments of
None None
}; };


/// Most recent message received.
Message lastMessage;
/// True if Pause message was received.
bool pauseReceived;

/// True if Resume message was received.
bool resumeReceived;

/// True if Restart message was received.
bool restartReceived;

/// True if Stop message was received.
bool stopReceived;


/// Functions to invoke when the Stop is received. /// Functions to invoke when the Stop is received.
std::vector<Callback *> stopCallbacks; std::vector<Callback *> stopCallbacks;

Loading…
Cancel
Save