NVIDIA Iray API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
http.h
Go to the documentation of this file.
1 //*****************************************************************************
2 // Copyright 1986, 2014 NVIDIA Corporation. All rights reserved.
3 //*****************************************************************************
6 //*****************************************************************************
7 
8 #ifndef MI_NEURAYLIB_HTTP_H
9 #define MI_NEURAYLIB_HTTP_H
10 
12 
13 #include <mi/neuraylib/idata.h>
14 
15 namespace mi {
16 
17 namespace http { class IConnection; }
18 
61 class IBuffer : public
65  mi::base::Interface_declare<0xfb925baf,0x1e38,0x461b,0x8e,0xcd,0x65,0xa3,0xf5,0x20,0xe5,0x92>
66 {
67 public:
69  virtual const Uint8* get_data() const = 0;
70 
72  virtual Size get_data_size() const = 0;
73 };
74  // end group mi_neuray_http
76 
79 namespace http {
80 
85 class IRequest
98 {
99 public:
101  virtual const char* get_request_line() const = 0;
102 
104  virtual const char* get_command() const = 0;
105 
107  virtual const char* get_protocol() const = 0;
108 
112  virtual void set_url( const char* url) = 0;
113 
115  virtual const char* get_url() const = 0;
116 
121  virtual void set_header( const char* key, const char* value) = 0;
122 
126  virtual void remove_header( const char* key) = 0;
127 
132  virtual const char* get_header( const char* key) const = 0;
133 
145  virtual bool get_header(
146  Size index, const char** key_pointer, const char** value_pointer) const = 0;
147 
155  virtual void set_argument( const char* key, const char* value) = 0;
156 
163  virtual void add_argument( const char* key, const char* value) = 0;
164 
170  virtual void remove_argument(const char* key) = 0;
171 
180  virtual const char* get_argument( const char* key) const = 0;
181 
193  virtual bool get_argument(
194  Size index, const char** key_pointer, const char** value_pointer) const = 0;
195 
199  virtual const char* get_body() const = 0;
200 };
201 
214 class IResponse
215 {
216 public:
221  virtual void set_result_code( Sint32 code, const char* message) = 0;
222 
224  virtual Sint32 get_result_code() const = 0;
225 
230  virtual void set_header( const char* key, const char* value) = 0;
231 
235  virtual void remove_header( const char* key) = 0;
236 
241  virtual const char* get_header( const char* key) const = 0;
242 
254  virtual bool get_header(
255  Size index, const char** key_pointer, const char** value_pointer) const = 0;
256 
258  virtual bool was_sent() const = 0;
259 };
260 
267 class IData_handler : public
268  mi::base::Interface_declare<0x723054d8,0xdfa7,0x4475,0xbc,0xb4,0x44,0x23,0x25,0xea,0x52,0x50>
269 {
270 public:
278  virtual IBuffer* handle( IConnection* connection, IBuffer* buffer) = 0;
279 };
280 
295 {
296 public:
298  virtual const char* get_peer_address() = 0;
299 
301  virtual const char* get_local_address() = 0;
302 
312  virtual bool print( const char* string) = 0;
313 
323  virtual bool enqueue( IBuffer* buffer) = 0;
324 
328  virtual Sint32 flush() = 0;
329 
333  virtual bool check_error() = 0;
334 
336  virtual IRequest* get_request() = 0;
337 
339  virtual IResponse* get_response() = 0;
340 
347  virtual void add_data_handler( IData_handler* handler) = 0;
348 
357  virtual void set_data_attachment( const char* key, IData* value) = 0;
358 
367  virtual IData* get_data_attachment( const char* key) = 0;
368 
384  template<class T>
385  T* get_data_attachment( const char* key)
386  {
387  IData* ptr = get_data_attachment( key);
388  if( !ptr)
389  return 0;
390  T* ptr_T = static_cast<T*>( ptr->get_interface( typename T::IID()));
391  ptr->release();
392  return ptr_T;
393  }
401  virtual void set_attachment( const char* key, const char* value) = 0;
402 
410  virtual const char* get_attachment( const char* key) = 0;
411 
417  virtual void remove_attachment( const char* key) = 0;
418 
430  virtual Sint32 read_data( Size size, char* buffer) = 0;
431 };
432 
441 class IRequest_handler : public
442  mi::base::Interface_declare<0x8747d0dd,0x1e27,0x4413,0xa0,0xd4,0x07,0x60,0x8f,0xed,0xfc,0xf9>
443 {
444 public:
455  virtual bool handle( IConnection* connection) = 0;
456 };
457 
470 class ICGIRequest_handler : public
471  mi::base::Interface_declare<0xa7fe482e,0x65f8,0x4a4c,0x87,0x21,0xff,0x19,0x21,0x36,0xda,0xe0>
472 {
473 public:
484  virtual bool handle( IConnection* connection) = 0;
485 };
486 
495 class IResponse_handler : public
496  mi::base::Interface_declare<0xa9386278,0x6938,0x45a7,0xa2,0x3b,0xbb,0x35,0xf7,0xe9,0x28,0x20>
497 {
498 public:
502  virtual void handle( IConnection* connection) = 0;
503 };
504 
506 class IServer : public
507  mi::base::Interface_declare<0x9923b273,0x082f,0x403a,0x83,0x57,0xcd,0x23,0x9b,0xcf,0x68,0x4c>
508 {
509 public:
519  virtual Sint32 start( const char* listen_address) = 0;
520 
527  virtual void shutdown() = 0;
528 
533  virtual Sint32 set_default_mime_type( const char* mime_type) = 0;
534 
543  virtual void add_mime_type( const char* extension, const char* mime_type) = 0;
544 
549  virtual const char* lookup_mime_type( const char* extension) = 0;
550 
554  virtual void install( IRequest_handler* handler) = 0;
555 
559  virtual void remove( IRequest_handler* handler) = 0;
560 
564  virtual void install( ICGIRequest_handler* handler) = 0;
565 
569  virtual void remove( ICGIRequest_handler* handler) = 0;
570 
574  virtual void install( IResponse_handler* handler) = 0;
575 
579  virtual void remove( IResponse_handler* handler) = 0;
580 
587  virtual void set_identification( const char* id_string) = 0;
588 
590  virtual const char* get_listen_address() = 0;
591 
595  virtual Size get_nr_of_connections() = 0;
596 
600  virtual Size get_nr_of_active_connections() = 0;
601 
607  virtual void set_keep_alive_timeout( Uint32 nr_of_seconds) = 0;
608 
610  virtual Uint32 get_keep_alive_timeout() const = 0;
611 
617  virtual void set_send_buffer_size( Uint32 send_buffer_size) = 0;
618 
620  virtual Uint32 get_send_buffer_size() const = 0;
621 
625  virtual void set_http_post_body_limit( Uint32 http_post_body_limit) = 0;
626 
628  virtual Uint32 get_http_post_body_limit() const = 0;
629 };
630 
637 class IFactory : public
638  mi::base::Interface_declare<0xddded154,0x4be8,0x42b6,0x81,0x68,0x21,0x16,0xc7,0xbd,0x63,0x40>
639 {
640 public:
642  virtual IServer* create_server() = 0;
643 
659  const char* root_url, const char* root_path, bool is_recursive = true) = 0;
660 
669  const char* source_url, const char* target_url) = 0;
670 
680  virtual IResponse_handler* create_log_handler( const char* path) = 0;
681 
695 };
696  // end group mi_neuray_http
698 
699 } // namespace http
700 
701 } // namespace mi
702 
703 #endif // MI_NEURAYLIB_HTTP_H