tdGetNumberOfDevices now communicates as expected.

This commit is contained in:
Stefan Persson 2010-10-11 08:08:08 +00:00
parent 3890e491c2
commit 407cf1584a
4 changed files with 30 additions and 23 deletions

View file

@ -6,6 +6,7 @@
#include "telldus-core.h"
#include "common.h"
#include "Message.h"
#include "Socket.h"
#include <stdlib.h>
@ -186,12 +187,13 @@ char * WINAPI tdLastSentValue( int intDeviceId ) {
* @returns an integer of the total number of devices configured
*/
int WINAPI tdGetNumberOfDevices(void){
TelldusCore::Socket s(L"TelldusClient");
TelldusCore::Socket s;
s.connect(L"TelldusClient");
std::wstring msg = L"20:tdGetNumberOfDevices";
s.write(msg);
std::wstring response = s.read();
return 1;
return TelldusCore::Message::takeInt(&response);
}
/**

View file

@ -14,10 +14,11 @@ namespace TelldusCore {
class Socket
{
public:
Socket(const std::wstring &server);
Socket();
Socket(SOCKET_T hPipe);
virtual ~Socket(void);
void connect(const std::wstring &server);
std::wstring read();
void write(const std::wstring &msg);

View file

@ -14,10 +14,27 @@ public:
bool connected;
};
Socket::Socket(const std::wstring &server) {
Socket::Socket() {
d = new PrivateData;
d->connected = false;
}
Socket::Socket(SOCKET_T hPipe)
{
d = new PrivateData;
d->hPipe = hPipe;
}
Socket::~Socket(void){
if (d->hPipe != INVALID_HANDLE_VALUE) {
CloseHandle(d->hPipe);
}
delete d;
}
void Socket::connect(const std::wstring &server){
bool fSuccess = false;
std::wstring name(L"\\\\.\\pipe\\" + server);
@ -48,20 +65,6 @@ Socket::Socket(const std::wstring &server) {
d->connected = true;
}
Socket::Socket(SOCKET_T hPipe)
{
d = new PrivateData;
d->hPipe = hPipe;
}
Socket::~Socket(void){
if (d->hPipe != INVALID_HANDLE_VALUE) {
CloseHandle(d->hPipe);
}
delete d;
}
std::wstring Socket::read() {
wchar_t buf[BUFSIZE];
int result;

View file

@ -51,8 +51,9 @@ void ClientCommunicationHandler::run(){
if(strReturn == L""){
msg.addArgument(intTemp);
}
// msg.addArgument(temp); //temp.toString().toStdString());
//}
else{
msg.addArgument(strReturn); //temp.toString().toStdString());
}
msg.append(L"\n");
d->clientSocket->write(msg);
@ -76,8 +77,8 @@ void ClientCommunicationHandler::parseMessage(const std::wstring &clientMessage,
//return L"12";
intReturn = 12;
}
intReturn = 5;
else{
intReturn = 5;
}
//return L"5";
}