summaryrefslogtreecommitdiff
path: root/cppe
diff options
context:
space:
mode:
authorDwayne Boone <dwayne@zeroc.com>2006-01-04 16:18:04 +0000
committerDwayne Boone <dwayne@zeroc.com>2006-01-04 16:18:04 +0000
commit5a38962d977b5c6786cec61cd79b7c9dbe6c65ab (patch)
tree77349fdef23a7a869b617863c558ef281899ae63 /cppe
parentAdded IceGrid.Node.DisableOnFailure (diff)
downloadice-5a38962d977b5c6786cec61cd79b7c9dbe6c65ab.tar.bz2
ice-5a38962d977b5c6786cec61cd79b7c9dbe6c65ab.tar.xz
ice-5a38962d977b5c6786cec61cd79b7c9dbe6c65ab.zip
Added zero copy byte sequence read function
Diffstat (limited to 'cppe')
-rw-r--r--cppe/include/IceE/BasicStream.h1
-rw-r--r--cppe/src/IceE/BasicStream.cpp18
2 files changed, 19 insertions, 0 deletions
diff --git a/cppe/include/IceE/BasicStream.h b/cppe/include/IceE/BasicStream.h
index f1d7b42d723..881bf5c3964 100644
--- a/cppe/include/IceE/BasicStream.h
+++ b/cppe/include/IceE/BasicStream.h
@@ -102,6 +102,7 @@ public:
void write(const std::vector<Ice::Byte>&);
void read(std::vector<Ice::Byte>&);
+ void read(std::pair<const Ice::Byte*, const Ice::Byte*>&);
void write(bool v)
{
diff --git a/cppe/src/IceE/BasicStream.cpp b/cppe/src/IceE/BasicStream.cpp
index ca009bf3a8a..fe4f4517535 100644
--- a/cppe/src/IceE/BasicStream.cpp
+++ b/cppe/src/IceE/BasicStream.cpp
@@ -620,6 +620,24 @@ IceInternal::BasicStream::readBlob(Ice::Byte* v, Container::size_type sz)
}
void
+IceInternal::BasicStream::read(pair<const Byte*, const Byte*>& v)
+{
+ Int sz;
+ readSize(sz);
+ if(sz > 0)
+ {
+ checkFixedSeq(sz, 1);
+ v.first = i;
+ v.second = i + sz;
+ i += sz;
+ }
+ else
+ {
+ v.first = v.second = i;
+ }
+}
+
+void
IceInternal::BasicStream::read(vector<Byte>& v)
{
Int sz;