Reducing header overuse, non-inlining selected methods (CPPOST-35).
[shibboleth/xmltooling.git] / xmltooling / soap / SOAPTransport.h
index ec6ed9c..3a5c345 100644 (file)
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2001-2007 Internet2
+ *  Copyright 2001-2009 Internet2
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -43,9 +43,9 @@ namespace xmltooling {
     {
         MAKE_NONCOPYABLE(SOAPTransport);
     protected:
-        SOAPTransport() {}
+        SOAPTransport();
     public:
-        virtual ~SOAPTransport() {}
+        virtual ~SOAPTransport();
 
         /**
          * A simple structure to capture SOAP addressing information.
@@ -166,9 +166,7 @@ namespace xmltooling {
          * @param value     implementation- and option-specific string to use
          * @return  true iff the transport supports the option and value supplied
          */
-        virtual bool setProviderOption(const char* provider, const char* option, const char* value) {
-            return false;
-        }
+        virtual bool setProviderOption(const char* provider, const char* option, const char* value);
 
         /**
          * Sends a stream of data over the transport. The function may return without
@@ -182,6 +180,17 @@ namespace xmltooling {
         virtual void send(std::istream& in)=0;
 
         /**
+         * Sends an optional stream of data over the transport. The function may return without
+         * having received any data, depending on the nature of the transport.
+         *
+         * <p>If the parameter is omitted, a request may be issued with no body if the transport
+         * supports that feature.
+         *
+         * @param in    input stream to send
+         */
+        virtual void send(std::istream* in=NULL);
+
+        /**
          * Returns reference to response stream.  The resulting stream must be
          * checked directly to determine whether data is available.
          *