summaryrefslogtreecommitdiff
path: root/lib/common/Archive.h
diff options
context:
space:
mode:
authorChris Wilson <chris+github@qwirx.com>2015-04-06 12:17:47 +0000
committerChris Wilson <chris+github@qwirx.com>2015-04-06 12:17:47 +0000
commitf152abd45f13daf1425c0ee32bccfe0d2dd2a647 (patch)
treed8653176990a5bc3c25d8ae4fa7a3383a25f9ebe /lib/common/Archive.h
parentc5ecc644d872ce15aab5ba9ce342397cfd331245 (diff)
Add missing timeouts to Archive reads.
Allows Archive to be used safely on network streams.
Diffstat (limited to 'lib/common/Archive.h')
-rw-r--r--lib/common/Archive.h23
1 files changed, 15 insertions, 8 deletions
diff --git a/lib/common/Archive.h b/lib/common/Archive.h
index 6d5ce88b..87dd1d44 100644
--- a/lib/common/Archive.h
+++ b/lib/common/Archive.h
@@ -49,18 +49,18 @@ public:
void Write(int Item)
{
int32_t privItem = htonl(Item);
- mrStream.Write(&privItem, sizeof(privItem));
+ mrStream.Write(&privItem, sizeof(privItem), mTimeout);
}
void Write(int64_t Item)
{
int64_t privItem = box_hton64(Item);
- mrStream.Write(&privItem, sizeof(privItem));
+ mrStream.Write(&privItem, sizeof(privItem), mTimeout);
}
void WriteExact(uint64_t Item) { Write(Item); }
void Write(uint64_t Item)
{
uint64_t privItem = box_hton64(Item);
- mrStream.Write(&privItem, sizeof(privItem));
+ mrStream.Write(&privItem, sizeof(privItem), mTimeout);
}
void Write(uint8_t Item)
{
@@ -71,7 +71,7 @@ public:
{
int size = Item.size();
Write(size);
- mrStream.Write(Item.c_str(), size);
+ mrStream.Write(Item.c_str(), size, mTimeout);
}
//
//
@@ -100,7 +100,9 @@ public:
void Read(int &rItemOut)
{
int32_t privItem;
- if(!mrStream.ReadFullBuffer(&privItem, sizeof(privItem), 0 /* not interested in bytes read if this fails */))
+ if(!mrStream.ReadFullBuffer(&privItem, sizeof(privItem),
+ 0 /* not interested in bytes read if this fails */,
+ mTimeout))
{
THROW_EXCEPTION(CommonException, ArchiveBlockIncompleteRead)
}
@@ -110,7 +112,8 @@ public:
{
int32_t privItem;
int bytesRead;
- if(mrStream.ReadFullBuffer(&privItem, sizeof(privItem), &bytesRead))
+ if(mrStream.ReadFullBuffer(&privItem, sizeof(privItem),
+ &bytesRead, mTimeout))
{
rItemOut = ntohl(privItem);
}
@@ -128,7 +131,9 @@ public:
void Read(int64_t &rItemOut)
{
int64_t privItem;
- if(!mrStream.ReadFullBuffer(&privItem, sizeof(privItem), 0 /* not interested in bytes read if this fails */))
+ if(!mrStream.ReadFullBuffer(&privItem, sizeof(privItem),
+ 0 /* not interested in bytes read if this fails */,
+ mTimeout))
{
THROW_EXCEPTION(CommonException, ArchiveBlockIncompleteRead)
}
@@ -138,7 +143,9 @@ public:
void Read(uint64_t &rItemOut)
{
uint64_t privItem;
- if(!mrStream.ReadFullBuffer(&privItem, sizeof(privItem), 0 /* not interested in bytes read if this fails */))
+ if(!mrStream.ReadFullBuffer(&privItem, sizeof(privItem),
+ 0 /* not interested in bytes read if this fails */,
+ mTimeout))
{
THROW_EXCEPTION(CommonException, ArchiveBlockIncompleteRead)
}