Switched to a transaction for TelldusCoreEvents as well. This since Windows seems to behave strange otherwise.

This commit is contained in:
Micke Prag 2010-09-01 14:07:58 +00:00
parent 9f7928076e
commit 6ace9fb071
3 changed files with 6 additions and 3 deletions

View file

@ -137,6 +137,8 @@ void Manager::run() {
while( d->eventSocket.connected() ) { while( d->eventSocket.connected() ) {
logMessage("-> OVERLAPPED read"); logMessage("-> OVERLAPPED read");
std::string data(d->eventSocket.read()); std::string data(d->eventSocket.read());
Message message("Tack");
d->eventSocket.write(message);
logMessage("<- OVERLAPPED result:"); logMessage("<- OVERLAPPED result:");
logMessage(data); logMessage(data);
if (data.length() == 0) { if (data.length() == 0) {

View file

@ -85,12 +85,13 @@ void Socket::disconnect() {
} }
void Socket::write(const TelldusService::Message &msg) { void Socket::write(const TelldusService::Message &msg) {
DWORD bytesWritten = 0; this->writeOverlapped(msg);
/*DWORD bytesWritten = 0;
if (WriteFile(d->hPipe, msg.data(), (DWORD)msg.length(), &bytesWritten, NULL)) { if (WriteFile(d->hPipe, msg.data(), (DWORD)msg.length(), &bytesWritten, NULL)) {
FlushFileBuffers(d->hPipe); FlushFileBuffers(d->hPipe);
} else { } else {
d->connected = false; d->connected = false;
} }*/
} }
void Socket::writeOverlapped(const TelldusService::Message &msg) { void Socket::writeOverlapped(const TelldusService::Message &msg) {

View file

@ -130,7 +130,7 @@ void TelldusCore::rawDeviceEventSlot(const QString &data, int controllerId) {
void TelldusCore::sendEventMessage(const Message &msg) { void TelldusCore::sendEventMessage(const Message &msg) {
foreach(Socket *s, d->eventSockets) { foreach(Socket *s, d->eventSockets) {
s->write(msg); std::string ret = s->readWriteOverlapped(msg);
} }
} }