#include <memory>
#include <string>
-
+#include <exception>
#include "bios.h"
+#include "io/opensslBIO.h"
#define RECORD_HEADER_SIZE 17
template <class T>
static void read( std::string::const_iterator& it, T& val ) {
union typeConversion {
- char buf[sizeof(T)];
+ char buf[sizeof( T )];
T value;
- typeConversion(const T& v) : value(v) {}
+ typeConversion( const T& v ) : value( v ) {}
};
typeConversion data( 0 );
void unpackFromString( const std::string& str ) {
if( str.size() != RECORD_HEADER_SIZE ) {
- throw "Invalid string length";
+ throw std::runtime_error("Invalid string length");
}
auto it = str.cbegin();
read( it, offset );
read( it, payloadLength );
}
-
+ bool isFollowupOf( const RecordHeader& head ) {
+ return head.command == command && head.flags == flags && head.sessid == sessid && head.command_count == command_count && head.totalLength == totalLength && head.offset + 1 == offset;
+ }
};
-std::string parseCommand( RecordHeader& head, const std::string& input, std::shared_ptr<std::ostream> log );
+std::string parseCommand( RecordHeader& head, const std::string& input );
+std::string parseCommandChunked( RecordHeader& head, std::shared_ptr<OpensslBIOWrapper> conn);
-void sendCommand( RecordHeader& head, const std::string& data, std::shared_ptr<OpensslBIO> bio, std::shared_ptr<std::ostream> log );
+void sendCommand( RecordHeader& head, const std::string& data, std::shared_ptr<OpensslBIO> bio );