Hi,
I am following the tutorial on Datahandler usage, but it is not working. The link is : http://www.mosync.com/documentation/tutorials/reading-and-writing-data#Using_DataHandler
I was able to modify the code as followed to store data, but I don't have any clue on how to read it out.
The code is as followed:
Thanks!
#include
#include
#include
#include "MAUtil/DataHandler.h"
using namespace MAUtil;
class MAUIMoblet: public Moblet {
public:
MAUIMoblet() {
String username = "m0sync";
String password = "p45sw0rd";
MAHandle myData = maCreatePlaceholder();
int size = username.length() + 4 + password.length() + 4;
if (maCreateData(myData, size) == RES_OK) {
DataHandler* handler = new DataHandler(myData);
int usernameLength = username.length();
handler->write(&usernameLength, 4);
handler->write(username.c_str(), username.length());
int passwordLength = password.length();
handler->write(&passwordLength, 4);
handler->write(password.c_str(), password.length());
}
MAHandle myStore = maOpenStore("hello", MAS_CREATE_IF_NECESSARY);
int result = maWriteStore(myStore, myData);
if (result >
{
maCloseStore(myStore, 0);
} else {
maCloseStore(myStore, 1);
}
MAHandle data = maCreatePlaceholder();
MAHandle readStore = maOpenStore("hello", 0);
if (readStore != STERR_NONEXISTENT) {
int result = maReadStore(readStore, data);
maCloseStore(readStore, 0);
if (result == RES_OUT_OF_MEMORY) {
} else {
DataHandler* handler = new DataHandler(data);
int userLength;
String usernameRead = "";
handler->read(&userLength, 4);
handler->read(&usernameRead, userLength);
lprintfln("username length %d", userLength);
lprintfln("Username %s", &usernameRead);
int passwordLengthRead;
String passwordRead = "";
handler->read(&passwordLengthRead, 4);
handler->read(&passwordRead, passwordLengthRead);
lprintfln("password length %d", passwordLengthRead);
lprintfln("password %s", &passwordRead);
}
}
}
void keyPressEvent(int keyCode) {
// todo: handle key presses
}
void keyReleaseEvent(int keyCode) {
// todo: handle key releases
}
~ MAUIMoblet() {
}
};
extern "C" int MAMain() {
Moblet::run(new MAUIMoblet());
return 0;
}
;