diff options
author | Chris Wilson <chris+github@qwirx.com> | 2014-09-04 01:36:19 +0000 |
---|---|---|
committer | Chris Wilson <chris+github@qwirx.com> | 2014-09-04 01:36:19 +0000 |
commit | e00bd81ce959d02d3fa62e7e75956162f8e70c7e (patch) | |
tree | df37302243b921f7adc26908ee1c9c5ea00afa60 /lib/server | |
parent | 944745c21c7df19ada39e1d347ca732c1f424070 (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-x | lib/server/makeprotocol.pl.in | 34 |
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() |