blob: d18b9db15508f81ed4ecd5e2027d0b49274a2186 [file] [log] [blame]
/*=========================================================================
* Copyright (c) 2010-2014 Pivotal Software, Inc. All Rights Reserved.
* This product is protected by U.S. and international copyright
* and intellectual property laws. Pivotal products are covered by
* one or more patents listed at http://www.pivotal.io/patents.
*=========================================================================
*/
/*
* PdxObject.cpp
*
* Created on: Sep 29, 2011
* Author: npatel
*/
#include "PdxVersioned1.hpp"
#ifdef HAVE_MALLOC_H
#include <malloc.h>
#endif
using namespace gemfire;
using namespace PdxTests;
template <typename T1, typename T2>
bool PdxTests::PdxVersioned1::genericValCompare(T1 value1, T2 value2) const
{
if (value1 != value2)
return false;
LOGINFO("PdxObject::genericValCompare Line_19");
return true;
}
template <typename T1, typename T2>
bool PdxTests::PdxVersioned1::genericCompare(T1* value1, T2* value2, int length) const
{
int i = 0;
while (i < length)
{
if (value1[i] != value2[i])
return false;
else
i++;
}
LOGINFO("PdxObject::genericCompare Line_34");
return true;
}
template <typename T1, typename T2>
bool PdxTests::PdxVersioned1::generic2DCompare(T1** value1, T2** value2, int length, int* arrLengths) const
{
LOGINFO("generic2DCompare length = %d ", length);
LOGINFO("generic2DCompare value1 = %d \t value2", value1[0][0], value2[0][0]);
LOGINFO("generic2DCompare value1 = %d \t value2", value1[1][0], value2[1][0]);
LOGINFO("generic2DCompare value1 = %d \t value2", value1[1][1], value2[1][1]);
for(int j=0; j<length; j++ ) {
LOGINFO("generic2DCompare arrlength0 = %d ", arrLengths[j]);
for(int k=0; k<arrLengths[j]; k++) {
LOGINFO("generic2DCompare arrlength = %d ", arrLengths[j]);
LOGINFO("generic2DCompare value1 = %d \t value2 = %d ", value1[j][k], value2[j][k]);
if (value1[j][k] != value2[j][k]) return false;
}
}
LOGINFO("PdxObject::genericCompare Line_34");
return true;
}
/*void PdxVersioned1::checkNullAndDelete(void *data)
{
if(data != NULL)
delete[] data;
}
PdxVersioned1::~PdxVersioned1() {
LOGINFO("~PdxVersioned1 - 1");
checkNullAndDelete( m_string);
LOGINFO("~PdxVersioned1 - 2");
checkNullAndDelete( m_byteArray);
LOGINFO("~PdxVersioned1 - 3");
checkNullAndDelete( m_boolArray);
LOGINFO("~PdxVersioned1 - 4");
checkNullAndDelete( m_sbyteArray);
LOGINFO("~PdxVersioned1 - 5");
checkNullAndDelete( m_charArray);
LOGINFO("~PdxVersioned1 - 6");
checkNullAndDelete( m_uint16Array);
LOGINFO("~PdxVersioned1 - 7");
checkNullAndDelete( m_uint16Array);
LOGINFO("~PdxVersioned1 - 8");
checkNullAndDelete( m_int32Array);
LOGINFO("~PdxVersioned1 - 9");
checkNullAndDelete( m_uint32Array);
LOGINFO("~PdxVersioned1 - 10");
checkNullAndDelete( m_longArray);
LOGINFO("~PdxVersioned1 - 11");
checkNullAndDelete( m_ulongArray);
LOGINFO("~PdxVersioned1 - 12");
checkNullAndDelete( m_floatArray);
LOGINFO("~PdxVersioned1 - 13");
checkNullAndDelete( m_doubleArray);
LOGINFO("~PdxVersioned1 - 14");
checkNullAndDelete( m_byteByteArray);
LOGINFO("~PdxVersioned1 - 15");
checkNullAndDelete( m_stringArray);
LOGINFO("~PdxVersioned1 - 16");
checkNullAndDelete( m_byte252);
LOGINFO("~PdxVersioned1 -17 ");
checkNullAndDelete( m_byte253);
LOGINFO("~PdxVersioned1 - 18");
checkNullAndDelete( m_byte65535);
LOGINFO("~PdxVersioned1 - 19");
checkNullAndDelete( m_byte65536);
LOGINFO("~PdxVersioned1 -20 ");
}*/
PdxVersioned1::PdxVersioned1(const char* key){
init(key);
}
void PdxVersioned1::init(const char* key){
m_char = 'C';
m_bool = true;
m_byte = 0x74;
m_sbyte = 0x67;
m_int16 = 0xab;
m_uint16 = 0x2dd5;
m_int32 = 0x2345abdc;
//m_uint32 = 0x2a65c434;
//m_long = 324897980;
m_ulong = 238749898;
m_float = 23324.324f;
m_double = 3243298498.00;
int len = strlen("PdxVersioned ") + strlen(key) + 1;
m_string = new char[len];
strcpy(m_string,"PdxVersioned ");
strcat(m_string,key);
m_boolArray = new bool[3];
m_boolArray[0] = true;
m_boolArray[1] = false;
m_boolArray[2] = true;
/*for(int i=0; i<3; i++){
m_boolArray[i] = true;
};*/
m_byteArray = new int8_t[2];
m_byteArray[0] = 0x34;
m_byteArray[1] = 0x64;
m_sbyteArray = new int8_t[2];
m_sbyteArray[0] = 0x34;
m_sbyteArray[1] = 0x64;
m_charArray = new wchar_t[2];
m_charArray[0] =(wchar_t)L'c';
m_charArray[1] =(wchar_t)L'v';
//time_t offset = 1310447869154L;
//m_date = CacheableDate::create(offset);
struct timeval now;
now.tv_sec = 1310447869;
now.tv_usec = 154000;
m_date = CacheableDate::create(now);
m_int16Array = new int16_t[2];
m_int16Array[0] = 0x2332;
m_int16Array[1] = 0x4545;
m_uint16Array = new int16_t[2];
m_uint16Array[0] = 0x3243;
m_uint16Array[1] = 0x3232;
m_int32Array = new int32_t[4];
m_int32Array[0] = 23;
m_int32Array[1] = 676868;
m_int32Array[2] = 34343;
m_int32Array[3] = 2323;
m_uint32Array = new int32_t[4];
m_uint32Array[0] = 435;
m_uint32Array[1] = 234324;
m_uint32Array[2] = 324324;
m_uint32Array[3] = 23432432;
m_longArray = new int64_t[2];
m_longArray[0] = 324324L;
m_longArray[1] = 23434545L;
m_ulongArray = new int64_t[2];
m_ulongArray[0] = 3245435;
m_ulongArray[1] = 3425435 ;
m_floatArray = new float[2];
m_floatArray[0] = 232.565f;
m_floatArray[1] = 2343254.67f;
m_doubleArray = new double[2];
m_doubleArray[0] = 23423432;
m_doubleArray[1] = 4324235435.00;
m_byteByteArray = new int8_t*[2];
//for(int i=0; i<2; i++){
// m_byteByteArray[i] = new int8_t[1];
//}
m_byteByteArray[0] = new int8_t[1];
m_byteByteArray[1] = new int8_t[2];
m_byteByteArray[0][0] = 0x23;
m_byteByteArray[1][0] = 0x34;
m_byteByteArray[1][1] = 0x55;
m_stringArray = new char*[2];
const char* str1 = "one";
const char* str2 = "two";
int size = (int)strlen(str1);
for(int i = 0; i < 2; i++){
m_stringArray[i] = new char[size];
}
m_stringArray[0] = (char*)str1;
m_stringArray[1] = (char*)str2;
m_arraylist = CacheableArrayList::create();
m_arraylist->push_back(CacheableInt32::create(1));
m_arraylist->push_back(CacheableInt32::create(2));
m_map = CacheableHashMap::create( );
m_map->insert(CacheableInt32::create(1), CacheableInt32::create(1));
m_map->insert(CacheableInt32::create(2), CacheableInt32::create(2));
m_pdxEnum = CacheableEnum::create("pdxEnumTest", "pdx2" , pdx2);
m_byte252 = new int8_t[252];
for(int i=0; i<252; i++){
m_byte252[i] = 0;
}
m_byte253 = new int8_t[253];
for(int i=0; i<253; i++){
m_byte253[i] = 0;
}
m_byte65535 = new int8_t[65535];
for(int i=0; i<65535; i++){
m_byte65535[i] = 0;
}
m_byte65536 = new int8_t[65536];
for(int i=0; i<65536; i++){
m_byte65536[i] = 0;
}
/*for (int32_t index = 0; index <3; ++index) {
m_objectArray->push_back(objectArray[index]);
}*/
/*
if (keys.size() > 0) {
m_objectArray = CacheableObjectArray::create();
for (int32_t index = 0; index < keys.size(); ++index) {
m_objectArray->push_back(keys.operator[](index));
}
}*/
boolArrayLen = 3;
byteArrayLen = 2;
shortArrayLen = 2;
intArrayLen = 4;
longArrayLen = 2;
doubleArrayLen = 2;
floatArrayLen = 2;
strLenArray = 2;
charArrayLen = 2;
byteByteArrayLen = 2;
lengthArr = new int[2];
lengthArr[0] = 1;
lengthArr[1] = 2;
}
void PdxTests::PdxVersioned1::toData( PdxWriterPtr pw ) /*const*/ {
//TODO:delete it later
int* lengthArr = new int[2];
lengthArr[0] = 1;
lengthArr[1] = 2;
pw->writeArrayOfByteArrays("m_byteByteArray", m_byteByteArray, 2, lengthArr);
pw->writeWideChar("m_char", m_char);
pw->writeBoolean("m_bool", m_bool);//1
pw->writeBooleanArray("m_boolArray", m_boolArray, 3);
pw->writeByte("m_byte", m_byte);
pw->writeByteArray("m_byteArray",m_byteArray, 2);
pw->writeWideCharArray("m_charArray", m_charArray, 2);
pw->writeObject("m_arraylist", m_arraylist);
pw->writeObject("m_map", m_map);
pw->writeString("m_string", m_string);
pw->writeDate("m_dateTime", m_date);
pw->writeDouble("m_double", m_double);
pw->writeDoubleArray("m_doubleArray", m_doubleArray, 2);
pw->writeFloat("m_float", m_float);
pw->writeFloatArray("m_floatArray", m_floatArray, 2);
pw->writeShort("m_int16", m_int16);
pw->writeInt("m_int32", m_int32);
//pw->writeLong("m_long", m_long);
pw->writeIntArray("m_int32Array", m_int32Array, 4);
pw->writeLongArray("m_longArray", m_longArray, 2);
pw->writeShortArray("m_int16Array", m_int16Array, 2);
pw->writeByte("m_sbyte", m_sbyte);
pw->writeByteArray("m_sbyteArray",m_sbyteArray, 2);
//int* strlengthArr = new int[2];
//strlengthArr[0] = 5;
//strlengthArr[1] = 5;
pw->writeStringArray("m_stringArray", m_stringArray, 2);
pw->writeShort("m_uint16", m_uint16);
//pw->writeInt("m_uint32", m_uint32);
pw->writeLong("m_ulong", m_ulong);
pw->writeIntArray("m_uint32Array", m_uint32Array, 4);
pw->writeLongArray("m_ulongArray", m_ulongArray, 2);
pw->writeShortArray("m_uint16Array", m_uint16Array, 2);
pw->writeByteArray("m_byte252",m_byte252, 252);
pw->writeByteArray("m_byte253",m_byte253, 253);
pw->writeByteArray("m_byte65535",m_byte65535, 65535);
pw->writeByteArray("m_byte65536",m_byte65536, 65536);
pw->writeObject("m_pdxEnum", m_pdxEnum);
//TODO:delete it later
}
void PdxTests::PdxVersioned1::fromData( PdxReaderPtr pr )
{
//TODO:temp added, delete later
int32_t* Lengtharr;
GF_NEW( Lengtharr, int32_t[2]);
int32_t arrLen = 0;
m_byteByteArray = pr->readArrayOfByteArrays("m_byteByteArray", arrLen, &Lengtharr);
//TODO::need to write compareByteByteArray() and check for m_byteByteArray elements
m_char = pr->readWideChar("m_char");
//GenericValCompare
m_bool = pr->readBoolean("m_bool");
//GenericValCompare
m_boolArray = pr->readBooleanArray("m_boolArray", boolArrayLen);
m_byte = pr->readByte("m_byte");
m_byteArray = pr->readByteArray("m_byteArray", byteArrayLen);
m_charArray = pr->readWideCharArray("m_charArray", charArrayLen);
m_arraylist = dynCast<CacheableArrayListPtr>(pr->readObject("m_arraylist"));
m_map = dynCast<CacheableHashMapPtr>(pr->readObject("m_map"));
//TODO:Check for the size
m_string = pr->readString("m_string");//GenericValCompare
m_date = pr->readDate("m_dateTime"); //compareData
m_double = pr->readDouble("m_double");
m_doubleArray = pr->readDoubleArray("m_doubleArray", doubleArrayLen);
m_float = pr->readFloat("m_float");
m_floatArray = pr->readFloatArray("m_floatArray", floatArrayLen);
m_int16 = pr->readShort("m_int16");
m_int32 = pr->readInt("m_int32");
//m_long = pr->readLong("m_long");
m_int32Array = pr->readIntArray("m_int32Array", intArrayLen);
m_longArray = pr->readLongArray("m_longArray", longArrayLen);
m_int16Array = pr->readShortArray("m_int16Array", shortArrayLen);
m_sbyte = pr->readByte("m_sbyte");
m_sbyteArray = pr->readByteArray("m_sbyteArray", byteArrayLen);
m_stringArray = pr->readStringArray("m_stringArray", strLenArray);
m_uint16 = pr->readShort("m_uint16");
//m_uint32 = pr->readInt("m_uint32");
m_ulong = pr->readLong("m_ulong");
m_uint32Array = pr->readIntArray("m_uint32Array", intArrayLen);
m_ulongArray = pr->readLongArray("m_ulongArray", longArrayLen);
m_uint16Array = pr->readShortArray("m_uint16Array", shortArrayLen);
//LOGINFO("PdxVersioned1::readInt() start...");
m_byte252 = pr->readByteArray("m_byte252", m_byte252Len);
m_byte253 = pr->readByteArray("m_byte253", m_byte253Len);
m_byte65535 = pr->readByteArray("m_byte65535", m_byte65535Len);
m_byte65536 = pr->readByteArray("m_byte65536", m_byte65536Len);
//TODO:Check for size
m_pdxEnum = pr->readObject("m_pdxEnum");
}
CacheableStringPtr PdxTests::PdxVersioned1::toString() const {
char idbuf[1024];
//sprintf(idbuf,"PdxObject: [ m_bool=%d ] [m_byte=%d] [m_int16=%d] [m_int32=%d] [m_float=%f] [m_double=%lf] [ m_string=%s ]",m_bool, m_byte, m_int16, m_int32, m_float, m_double, m_string);
//sprintf(idbuf,"PdxObject testObject:[m_int32=%d] string = %s", m_int32,m_string);
sprintf(idbuf,"PdxVersioned 1 : %s",m_string);
return CacheableString::create( idbuf );
}
bool PdxTests::PdxVersioned1::equals(PdxTests::PdxVersioned1& other, bool isPdxReadSerialized)const {
PdxVersioned1* ot = dynamic_cast<PdxVersioned1*>(&other);
if (ot == NULL) {
return false;
}
if (ot == this) {
return true;
}
genericValCompare(ot->m_int32, m_int32);
genericValCompare(ot->m_bool, m_bool);
genericValCompare(ot->m_byte, m_byte);
genericValCompare(ot->m_int16, m_int16);
//genericValCompare(ot->m_long, m_long);
genericValCompare(ot->m_float, m_float);
genericValCompare(ot->m_double, m_double);
genericValCompare(ot->m_sbyte, m_sbyte);
genericValCompare(ot->m_uint16, m_uint16);
//genericValCompare(ot->m_uint32, m_uint32);
genericValCompare(ot->m_ulong, m_ulong);
genericValCompare(ot->m_char, m_char);
if (strcmp(ot->m_string , m_string) != 0) {
return false;
}
genericCompare(ot->m_byteArray, m_byteArray, byteArrayLen);
genericCompare(ot->m_int16Array, m_int16Array, shortArrayLen);
genericCompare(ot->m_int32Array, m_int32Array, intArrayLen);
genericCompare(ot->m_longArray, m_longArray, longArrayLen);
genericCompare(ot->m_doubleArray, m_doubleArray, doubleArrayLen);
genericCompare(ot->m_floatArray, m_floatArray, floatArrayLen);
genericCompare(ot->m_uint32Array, m_uint32Array, intArrayLen);
genericCompare(ot->m_ulongArray, m_ulongArray, longArrayLen);
genericCompare(ot->m_uint16Array, m_uint16Array, shortArrayLen);
genericCompare(ot->m_sbyteArray, m_sbyteArray, shortArrayLen);
genericCompare(ot->m_charArray, m_charArray, charArrayLen);
//generic2DCompare(ot->m_byteByteArray, m_byteByteArray, byteByteArrayLen, lengthArr);
//CacheableEnumPtr myenum = dynCast<CacheableEnumPtr>(m_pdxEnum);
//CacheableEnumPtr otenum = dynCast<CacheableEnumPtr>(ot->m_pdxEnum);
// if (myenum->getEnumOrdinal() != otenum->getEnumOrdinal()) return false;
//if (strcmp(myenum->getEnumClassName(), otenum->getEnumClassName()) != 0) return false;
//if (strcmp(myenum->getEnumName(), otenum->getEnumName()) != 0) return false;
genericValCompare(ot->m_arraylist->size(), m_arraylist->size());
for(int k= 0; k<m_arraylist->size(); k++) {
genericValCompare(ot->m_arraylist->at(k), m_arraylist->at(k));
}
return true;
}