summaryrefslogtreecommitdiff
path: root/lib/server
diff options
context:
space:
mode:
authorChris Wilson <chris+github@qwirx.com>2014-09-04 01:36:19 +0000
committerChris Wilson <chris+github@qwirx.com>2014-09-04 01:36:19 +0000
commite00bd81ce959d02d3fa62e7e75956162f8e70c7e (patch)
treedf37302243b921f7adc26908ee1c9c5ea00afa60 /lib/server
parent944745c21c7df19ada39e1d347ca732c1f424070 (diff)
Changed many uses of BackupProtocolClient to BackupProtocolCallable.
Makes way for more use of local protocol objects and protocol subclasses. Merged back changes from the test refactor branch to reduce diffs.
Diffstat (limited to 'lib/server')
-rwxr-xr-xlib/server/makeprotocol.pl.in34
1 files changed, 27 insertions, 7 deletions
diff --git a/lib/server/makeprotocol.pl.in b/lib/server/makeprotocol.pl.in
index ed0f1ee6..348c85d3 100755
--- a/lib/server/makeprotocol.pl.in
+++ b/lib/server/makeprotocol.pl.in
@@ -216,6 +216,7 @@ my $custom_protocol_subclass = $protocol_name."Protocol";
my $client_server_base_class = $protocol_name."ProtocolClientServer";
my $replyable_base_class = $protocol_name."ProtocolReplyable";
my $callable_base_class = $protocol_name."ProtocolCallable";
+my $send_receive_class = $protocol_name."ProtocolSendReceive";
print H <<__E;
class $custom_protocol_subclass;
@@ -241,6 +242,12 @@ class $request_base_class
{
};
+class $send_receive_class {
+public:
+ virtual void Send(const $message_base_class &rObject) = 0;
+ virtual std::auto_ptr<$message_base_class> Receive() = 0;
+};
+
class $custom_protocol_subclass : public Protocol
{
public:
@@ -740,7 +747,8 @@ __E
# the callable protocol interface (implemented by Client and Local classes)
# with Query methods that don't take a context parameter
print H <<__E;
-class $callable_base_class : public virtual $client_server_base_class
+class $callable_base_class : public virtual $client_server_base_class,
+ public $send_receive_class
{
public:
virtual int GetTimeout() = 0;
@@ -837,15 +845,13 @@ __E
$server_or_client_class($context_class &rContext);
__E
}
- else
- {
- print H <<__E;
+
+ print H <<__E;
$server_or_client_class(std::auto_ptr<SocketStream> apConn);
std::auto_ptr<$message_base_class> Receive();
void Send(const $message_base_class &rObject);
__E
- }
-
+
if($writing_server)
{
# need to put in the conversation function
@@ -877,6 +883,7 @@ __E
print H <<__E;
private:
$context_class &mrContext;
+ std::auto_ptr<$message_base_class> mapLastReply;
public:
virtual std::auto_ptr<IOStream> ReceiveStream()
{
@@ -971,7 +978,20 @@ $server_or_client_class\::~$server_or_client_class()
__E
# write receive and send functions
- if(not $writing_local)
+ if($writing_local)
+ {
+ print CPP <<__E;
+std::auto_ptr<$message_base_class> $server_or_client_class\::Receive()
+{
+ return mapLastReply;
+}
+void $server_or_client_class\::Send(const $message_base_class &rObject)
+{
+ mapLastReply = rObject.DoCommand(*this, mrContext);
+}
+__E
+ }
+ else
{
print CPP <<__E;
std::auto_ptr<$message_base_class> $server_or_client_class\::Receive()