v1.2b8
parent
cd02273e2a
commit
5b2d493872
|
|
@ -1,5 +1,11 @@
|
||||||
NORM Version History
|
NORM Version History
|
||||||
|
|
||||||
|
Version 1.2b8
|
||||||
|
=============
|
||||||
|
- Fixed bug introduced during "alignment" changes
|
||||||
|
in previous release.
|
||||||
|
- Fixed Protolib WIN32 build issue
|
||||||
|
|
||||||
Version 1.2b7
|
Version 1.2b7
|
||||||
=============
|
=============
|
||||||
- Changed normMessage.[h|cpp] to fix alignment issues
|
- Changed normMessage.[h|cpp] to fix alignment issues
|
||||||
|
|
|
||||||
|
|
@ -511,7 +511,6 @@ void NormInstance::Shutdown()
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
notify_pool.Append(previous_notification);
|
notify_pool.Append(previous_notification);
|
||||||
previous_notification = NULL;
|
previous_notification = NULL;
|
||||||
}
|
}
|
||||||
|
|
@ -545,7 +544,6 @@ void NormInstance::Shutdown()
|
||||||
}
|
}
|
||||||
delete n;
|
delete n;
|
||||||
}
|
}
|
||||||
|
|
||||||
notify_pool.Destroy();
|
notify_pool.Destroy();
|
||||||
} // end NormInstance::Shutdown()
|
} // end NormInstance::Shutdown()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -161,9 +161,10 @@ NormApp::NormApp()
|
||||||
|
|
||||||
NormApp::~NormApp()
|
NormApp::~NormApp()
|
||||||
{
|
{
|
||||||
if (address) delete address;
|
if (address) delete[] address;
|
||||||
if (rx_cache_path) delete rx_cache_path;
|
if (interface_name) delete[] interface_name;
|
||||||
if (post_processor) delete post_processor;
|
if (rx_cache_path) delete[] rx_cache_path;
|
||||||
|
if (post_processor) delete[] post_processor;
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE on message flushing mode:
|
// NOTE on message flushing mode:
|
||||||
|
|
|
||||||
|
|
@ -88,14 +88,14 @@ bool NormEncoder::Init(int numParity, int vecSizeMax)
|
||||||
// Free memory allocated for encoder state (Encoder must be re-inited before use)
|
// Free memory allocated for encoder state (Encoder must be re-inited before use)
|
||||||
void NormEncoder::Destroy()
|
void NormEncoder::Destroy()
|
||||||
{
|
{
|
||||||
if(scratch)
|
if(NULL != scratch)
|
||||||
{
|
{
|
||||||
delete []scratch;
|
delete[] scratch;
|
||||||
scratch = NULL;
|
scratch = NULL;
|
||||||
}
|
}
|
||||||
if (genPoly)
|
if (NULL != genPoly)
|
||||||
{
|
{
|
||||||
delete genPoly;
|
delete[] genPoly;
|
||||||
genPoly = NULL;
|
genPoly = NULL;
|
||||||
}
|
}
|
||||||
} // end NormEncoder::Destroy()
|
} // end NormEncoder::Destroy()
|
||||||
|
|
@ -432,7 +432,6 @@ int NormDecoder::Decode(char** dVec, int ndata, UINT16 erasureCount, UINT16* era
|
||||||
data++;
|
data++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return erasureCount;
|
return erasureCount;
|
||||||
} // end NormDecoder::Decode()
|
} // end NormDecoder::Decode()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1983,7 +1983,7 @@ void NormNodeTree::AttachNode(NormNode *node)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
root = node; // root _was_ NULL
|
root = node; // root _was_ NULL
|
||||||
} // end NormNodeTree::AddNode()
|
} // end NormNodeTree::AttachNode()
|
||||||
|
|
||||||
|
|
||||||
void NormNodeTree::DetachNode(NormNode* node)
|
void NormNodeTree::DetachNode(NormNode* node)
|
||||||
|
|
@ -2040,7 +2040,7 @@ void NormNodeTree::DetachNode(NormNode* node)
|
||||||
}
|
}
|
||||||
if ((y->left = node->left)) y->left->parent = y;
|
if ((y->left = node->left)) y->left->parent = y;
|
||||||
if ((y->right = node->right)) y->right->parent = y;
|
if ((y->right = node->right)) y->right->parent = y;
|
||||||
}
|
}
|
||||||
} // end NormNodeTree::DetachNode()
|
} // end NormNodeTree::DetachNode()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -457,14 +457,9 @@ class NormNodeTree
|
||||||
NormNodeTree();
|
NormNodeTree();
|
||||||
~NormNodeTree();
|
~NormNodeTree();
|
||||||
NormNode* FindNodeById(NormNodeId nodeId) const;
|
NormNode* FindNodeById(NormNodeId nodeId) const;
|
||||||
void DeleteNode(NormNode *theNode)
|
|
||||||
{
|
|
||||||
ASSERT(theNode);
|
|
||||||
DetachNode(theNode);
|
|
||||||
delete theNode;
|
|
||||||
}
|
|
||||||
void AttachNode(NormNode *theNode);
|
void AttachNode(NormNode *theNode);
|
||||||
void DetachNode(NormNode *theNode);
|
void DetachNode(NormNode *theNode);
|
||||||
|
NormNode* GetRoot() const {return root;}
|
||||||
void Destroy(); // delete all nodes in tree
|
void Destroy(); // delete all nodes in tree
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
@ -505,8 +500,7 @@ class NormNodeList
|
||||||
}
|
}
|
||||||
void Destroy(); // delete all nodes in list
|
void Destroy(); // delete all nodes in list
|
||||||
const NormNode* Head() {return head;}
|
const NormNode* Head() {return head;}
|
||||||
|
|
||||||
|
|
||||||
// Members
|
// Members
|
||||||
private:
|
private:
|
||||||
NormNode* head;
|
NormNode* head;
|
||||||
|
|
|
||||||
|
|
@ -67,6 +67,7 @@ bool NormObject::Open(const NormObjectSize& objectSize,
|
||||||
// DATA or FILE objects, buffer size for STREAM objects
|
// DATA or FILE objects, buffer size for STREAM objects
|
||||||
// In either case, we need our sliding bit masks to be of
|
// In either case, we need our sliding bit masks to be of
|
||||||
// appropriate size.
|
// appropriate size.
|
||||||
|
ASSERT(!IsOpen());
|
||||||
if (server)
|
if (server)
|
||||||
{
|
{
|
||||||
if (infoLen > 0)
|
if (infoLen > 0)
|
||||||
|
|
@ -1950,7 +1951,7 @@ NormDataObject::~NormDataObject()
|
||||||
{
|
{
|
||||||
if (data_ptr)
|
if (data_ptr)
|
||||||
{
|
{
|
||||||
delete data_ptr;
|
delete[] data_ptr;
|
||||||
data_ptr = NULL;
|
data_ptr = NULL;
|
||||||
}
|
}
|
||||||
data_released = false;
|
data_released = false;
|
||||||
|
|
@ -1964,6 +1965,12 @@ bool NormDataObject::Open(char* dataPtr,
|
||||||
const char* infoPtr,
|
const char* infoPtr,
|
||||||
UINT16 infoLen)
|
UINT16 infoLen)
|
||||||
{
|
{
|
||||||
|
if (data_released && (NULL != data_ptr))
|
||||||
|
{
|
||||||
|
delete[] data_ptr;
|
||||||
|
data_ptr = NULL;
|
||||||
|
data_released = false;
|
||||||
|
}
|
||||||
if (server)
|
if (server)
|
||||||
{
|
{
|
||||||
// We're receiving this data object
|
// We're receiving this data object
|
||||||
|
|
@ -3067,7 +3074,7 @@ void NormObjectTable::Destroy()
|
||||||
while((obj = Find(range_lo)))
|
while((obj = Find(range_lo)))
|
||||||
{
|
{
|
||||||
Remove(obj);
|
Remove(obj);
|
||||||
delete obj;
|
delete obj; // (TBD - make this obj->Release() ???
|
||||||
}
|
}
|
||||||
delete []table;
|
delete []table;
|
||||||
table = (NormObject**)NULL;
|
table = (NormObject**)NULL;
|
||||||
|
|
|
||||||
|
|
@ -53,13 +53,12 @@ bool NormSegmentPool::Init(unsigned int count, unsigned int size)
|
||||||
void NormSegmentPool::Destroy()
|
void NormSegmentPool::Destroy()
|
||||||
{
|
{
|
||||||
ASSERT(seg_count == seg_total);
|
ASSERT(seg_count == seg_total);
|
||||||
char* ptr;
|
char* ptr = seg_list;
|
||||||
memcpy(&ptr, &seg_list, sizeof(char*));
|
|
||||||
while (ptr)
|
while (ptr)
|
||||||
{
|
{
|
||||||
char* next;
|
char* next;
|
||||||
memcpy(&next, ptr, sizeof(char*));
|
memcpy(&next, ptr, sizeof(char*));
|
||||||
delete ptr;
|
delete[] ptr;
|
||||||
ptr = next;
|
ptr = next;
|
||||||
}
|
}
|
||||||
seg_list = NULL;
|
seg_list = NULL;
|
||||||
|
|
@ -73,7 +72,7 @@ char* NormSegmentPool::Get()
|
||||||
char* ptr = seg_list;
|
char* ptr = seg_list;
|
||||||
if (ptr)
|
if (ptr)
|
||||||
{
|
{
|
||||||
memcpy(&seg_list, ptr, sizeof(char));
|
memcpy(&seg_list, ptr, sizeof(char*));
|
||||||
seg_count--;
|
seg_count--;
|
||||||
//#ifdef NORM_DEBUG
|
//#ifdef NORM_DEBUG
|
||||||
overrun_flag = false;
|
overrun_flag = false;
|
||||||
|
|
|
||||||
|
|
@ -363,12 +363,22 @@ void NormSession::StopServer()
|
||||||
{
|
{
|
||||||
if (probe_timer.IsActive()) probe_timer.Deactivate();
|
if (probe_timer.IsActive()) probe_timer.Deactivate();
|
||||||
encoder.Destroy();
|
encoder.Destroy();
|
||||||
|
acking_node_tree.Destroy();
|
||||||
|
cc_node_list.Destroy();
|
||||||
|
// Iterate tx_table and release objects
|
||||||
|
while (!tx_table.IsEmpty())
|
||||||
|
{
|
||||||
|
NormObject* obj = tx_table.Find(tx_table.RangeLo());
|
||||||
|
ASSERT(obj);
|
||||||
|
tx_table.Remove(obj);
|
||||||
|
obj->Release();
|
||||||
|
}
|
||||||
|
// Then destroy table
|
||||||
tx_table.Destroy();
|
tx_table.Destroy();
|
||||||
block_pool.Destroy();
|
block_pool.Destroy();
|
||||||
segment_pool.Destroy();
|
segment_pool.Destroy();
|
||||||
tx_repair_mask.Destroy();
|
tx_repair_mask.Destroy();
|
||||||
tx_pending_mask.Destroy();
|
tx_pending_mask.Destroy();
|
||||||
tx_table.Destroy();
|
|
||||||
is_server = false;
|
is_server = false;
|
||||||
if (!IsClient()) Close();
|
if (!IsClient()) Close();
|
||||||
} // end NormSession::StopServer()
|
} // end NormSession::StopServer()
|
||||||
|
|
@ -386,7 +396,17 @@ bool NormSession::StartClient(unsigned long bufferSize, const char* interfaceNam
|
||||||
|
|
||||||
void NormSession::StopClient()
|
void NormSession::StopClient()
|
||||||
{
|
{
|
||||||
server_tree.Destroy();
|
// Iterate server_tree and close/release server nodes
|
||||||
|
NormServerNode* serverNode =
|
||||||
|
static_cast<NormServerNode*>(server_tree.GetRoot());
|
||||||
|
while (serverNode)
|
||||||
|
{
|
||||||
|
server_tree.DetachNode(serverNode);
|
||||||
|
serverNode->Close();
|
||||||
|
serverNode->Release();
|
||||||
|
serverNode =
|
||||||
|
static_cast<NormServerNode*>(server_tree.GetRoot());
|
||||||
|
}
|
||||||
is_client = false;
|
is_client = false;
|
||||||
if (!is_server) Close();
|
if (!is_server) Close();
|
||||||
}
|
}
|
||||||
|
|
@ -639,7 +659,8 @@ void NormSession::ServerRemoveAckingNode(NormNodeId nodeId)
|
||||||
{
|
{
|
||||||
if (watermark_pending && theNode->AckReceived())
|
if (watermark_pending && theNode->AckReceived())
|
||||||
acks_collected--;
|
acks_collected--;
|
||||||
acking_node_tree.DeleteNode(theNode);
|
acking_node_tree.DetachNode(theNode);
|
||||||
|
delete theNode;
|
||||||
acking_node_count--;
|
acking_node_count--;
|
||||||
}
|
}
|
||||||
} // end NormSession::RemoveAckingNode()
|
} // end NormSession::RemoveAckingNode()
|
||||||
|
|
@ -982,8 +1003,6 @@ bool NormSession::QueueTxObject(NormObject* obj)
|
||||||
ASSERT(tx_pending_mask.Test(obj->GetId()));
|
ASSERT(tx_pending_mask.Test(obj->GetId()));
|
||||||
next_tx_object_id++;
|
next_tx_object_id++;
|
||||||
TouchServer();
|
TouchServer();
|
||||||
//posted_tx_queue_empty = false;
|
|
||||||
//Serve();
|
|
||||||
return true;
|
return true;
|
||||||
} // end NormSession::QueueTxObject()
|
} // end NormSession::QueueTxObject()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,6 @@
|
||||||
|
|
||||||
#ifndef _NORM_VERSION
|
#ifndef _NORM_VERSION
|
||||||
#define _NORM_VERSION
|
#define _NORM_VERSION
|
||||||
#define VERSION "1.2b7"
|
#define VERSION "1.2b8"
|
||||||
#endif // _NORM_VERSION
|
#endif // _NORM_VERSION
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue