fixed: ipc client connected event was being wiped out

daemon now communicates graceful shutdown message through new ipc system.
This commit is contained in:
Nick Bolton
2012-07-05 19:10:04 +00:00
parent 3d6551f708
commit ddb2d7feeb
10 changed files with 44 additions and 38 deletions

View File

@@ -68,13 +68,12 @@ void IpcClient::read()
stream.readRawData(data, len);
readLogLine(QString::fromUtf8(data, len));
break;
}
break;
default: {
std::cout << "invalid code: " << codeBuf[0] << std::endl;
}
break;
default:
std::cerr << "message type not supported: " << codeBuf[0] << std::endl;
break;
}
}
}
@@ -93,7 +92,7 @@ void IpcClient::error(QAbstractSocket::SocketError error)
QTimer::singleShot(1000, this, SLOT(connectToHost()));
}
void IpcClient::write(unsigned char code, unsigned char length, const char* data)
void IpcClient::write(int code, int length, const char* data)
{
QDataStream stream(m_Socket);
@@ -102,12 +101,20 @@ void IpcClient::write(unsigned char code, unsigned char length, const char* data
stream.writeRawData(codeBuf, 1);
switch (code) {
case kIpcCommand: {
char lenBuf[2];
intToBytes(length, lenBuf, 2);
stream.writeRawData(lenBuf, 2);
stream.writeRawData(data, length);
}
case kIpcHello:
stream.writeRawData(data, 1);
break;
case kIpcCommand: {
char lenBuf[2];
intToBytes(length, lenBuf, 2);
stream.writeRawData(lenBuf, 2);
stream.writeRawData(data, length);
break;
}
default:
std::cerr << "message type not supported: " << code << std::endl;
break;
}
}

View File

@@ -32,7 +32,7 @@ public:
IpcClient();
virtual ~IpcClient();
void write(unsigned char code, unsigned char length, const char* data);
void write(int code, int length, const char* data);
public slots:
void connectToHost();
@@ -55,14 +55,14 @@ private:
QTcpSocket* m_Socket;
};
enum IpcMessageType {
enum qIpcMessageType {
kIpcHello,
kIpcLogLine,
kIpcCommand,
kIpcShutdown,
};
enum IpcClientType {
enum qIpcClientType {
kIpcClientUnknown,
kIpcClientGui,
kIpcClientNode,

View File

@@ -686,7 +686,7 @@ void MainWindow::sendDaemonCommand(const QString& command, bool showErrors)
{
std::string s = command.toStdString();
const char* data = s.c_str();
m_IpcClient.write(Command, strlen(data), data);
m_IpcClient.write(kIpcCommand, strlen(data), data);
}
void MainWindow::on_m_pActionWizard_triggered()

View File

@@ -69,10 +69,6 @@ class MainWindow : public QMainWindow, public Ui::MainWindowBase
synergyServer
};
enum qIpcMessage {
Command = 1
};
enum qLevel {
Error,
Info
@@ -135,7 +131,7 @@ class MainWindow : public QMainWindow, public Ui::MainWindowBase
bool serverArgs(QStringList& args, QString& app);
void setStatus(const QString& status);
void sendDaemonCommand(const QString& command, bool showErrors);
void sendIpcMessage(qIpcMessage type, const char* buffer, bool showErrors);
void sendIpcMessage(qIpcMessageType type, const char* buffer, bool showErrors);
private:
QSettings& m_Settings;