summaryrefslogtreecommitdiff
path: root/ACE/ace/OS_NS_stropts.h
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/ace/OS_NS_stropts.h')
-rw-r--r--ACE/ace/OS_NS_stropts.h172
1 files changed, 172 insertions, 0 deletions
diff --git a/ACE/ace/OS_NS_stropts.h b/ACE/ace/OS_NS_stropts.h
new file mode 100644
index 00000000000..ce9a6ba23ba
--- /dev/null
+++ b/ACE/ace/OS_NS_stropts.h
@@ -0,0 +1,172 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file OS_NS_stropts.h
+ *
+ * $Id$
+ *
+ * @author Douglas C. Schmidt <schmidt@cs.wustl.edu>
+ * @author Jesper S. M|ller<stophph@diku.dk>
+ * @author and a cast of thousands...
+ *
+ * Originally in OS.h.
+ */
+//=============================================================================
+
+#ifndef ACE_OS_NS_STROPTS_H
+#define ACE_OS_NS_STROPTS_H
+
+# include /**/ "ace/pre.h"
+
+# include "ace/config-all.h"
+
+# if !defined (ACE_LACKS_PRAGMA_ONCE)
+# pragma once
+# endif /* ACE_LACKS_PRAGMA_ONCE */
+
+# ifndef ACE_IOCTL_TYPE_ARG2
+# define ACE_IOCTL_TYPE_ARG2 int
+# endif
+
+#include "ace/os_include/os_stropts.h"
+#include "ace/os_include/os_stdio.h"
+#include "ace/ACE_export.h"
+
+#if defined (ACE_EXPORT_MACRO)
+# undef ACE_EXPORT_MACRO
+#endif
+#define ACE_EXPORT_MACRO ACE_Export
+
+ACE_BEGIN_VERSIONED_NAMESPACE_DECL
+
+#if defined (ACE_HAS_WINSOCK2) && (ACE_HAS_WINSOCK2 != 0)
+typedef WSAPROTOCOL_INFO ACE_Protocol_Info;
+
+// Callback function that's used by the QoS-enabled <ACE_OS::ioctl>
+// method.
+typedef LPWSAOVERLAPPED_COMPLETION_ROUTINE ACE_OVERLAPPED_COMPLETION_FUNC;
+typedef GROUP ACE_SOCK_GROUP;
+#else /* (ACE_HAS_WINSOCK2) && (ACE_HAS_WINSOCK2 != 0) */
+struct ACE_Protocol_Info
+{
+ unsigned long dwServiceFlags1;
+ int iAddressFamily;
+ int iProtocol;
+ char szProtocol[255+1];
+};
+
+// Callback function that's used by the QoS-enabled <ACE_OS::ioctl>
+// method.
+typedef void (*ACE_OVERLAPPED_COMPLETION_FUNC) (unsigned long error,
+ unsigned long bytes_transferred,
+ ACE_OVERLAPPED *overlapped,
+ unsigned long flags);
+typedef unsigned long ACE_SOCK_GROUP;
+
+#endif /* (ACE_HAS_WINSOCK2) && (ACE_HAS_WINSOCK2 != 0) */
+
+// @todo: move this to it's own file... dhinton
+/**
+ * @class ACE_Str_Buf
+ *
+ * @brief Simple wrapper for STREAM pipes strbuf.
+ */
+class ACE_Export ACE_Str_Buf : public strbuf
+{
+public:
+ // = Initialization method
+ /// Constructor.
+ ACE_Str_Buf (void *b = 0, int l = 0, int max = 0);
+
+ /// Constructor.
+ ACE_Str_Buf (strbuf &);
+};
+
+class ACE_QoS;
+
+namespace ACE_OS {
+
+ ACE_NAMESPACE_INLINE_FUNCTION
+ int getmsg (ACE_HANDLE handle,
+ struct strbuf *ctl,
+ struct strbuf
+ *data, int *flags);
+
+ ACE_NAMESPACE_INLINE_FUNCTION
+ int getpmsg (ACE_HANDLE handle,
+ struct strbuf *ctl,
+ struct strbuf
+ *data,
+ int *band,
+ int *flags);
+
+ ACE_NAMESPACE_INLINE_FUNCTION
+ int fattach (int handle,
+ const char *path);
+
+ ACE_NAMESPACE_INLINE_FUNCTION
+ int fdetach (const char *file);
+
+ /// UNIX-style <ioctl>.
+ ACE_NAMESPACE_INLINE_FUNCTION
+ int ioctl (ACE_HANDLE handle,
+ ACE_IOCTL_TYPE_ARG2 cmd,
+ void * = 0);
+
+ /// QoS-enabled <ioctl>.
+ extern ACE_Export
+ int ioctl (ACE_HANDLE socket,
+ unsigned long io_control_code,
+ void *in_buffer_p,
+ unsigned long in_buffer,
+ void *out_buffer_p,
+ unsigned long out_buffer,
+ unsigned long *bytes_returned,
+ ACE_OVERLAPPED *overlapped,
+ ACE_OVERLAPPED_COMPLETION_FUNC func);
+
+#if !(defined (ACE_HAS_WINCE) && (UNDER_CE < 500))
+ /// QoS-enabled <ioctl> when the I/O control code is either
+ /// SIO_SET_QOS or SIO_GET_QOS.
+ extern ACE_Export
+ int ioctl (ACE_HANDLE socket,
+ unsigned long io_control_code,
+ ACE_QoS &ace_qos,
+ unsigned long *bytes_returned,
+ void *buffer_p = 0,
+ unsigned long buffer = 0,
+ ACE_OVERLAPPED *overlapped = 0,
+ ACE_OVERLAPPED_COMPLETION_FUNC func = 0);
+#endif /* !(defined (ACE_HAS_WINCE) && (UNDER_CE < 500)) */
+
+ ACE_NAMESPACE_INLINE_FUNCTION
+ int isastream (ACE_HANDLE handle);
+
+ ACE_NAMESPACE_INLINE_FUNCTION
+ int putmsg (ACE_HANDLE handle,
+ const struct strbuf *ctl,
+ const struct strbuf *data,
+ int flags);
+
+ ACE_NAMESPACE_INLINE_FUNCTION
+ int putpmsg (ACE_HANDLE handle,
+ const struct strbuf *ctl,
+ const struct strbuf *data,
+ int band,
+ int flags);
+
+} /* namespace ACE_OS */
+
+ACE_END_VERSIONED_NAMESPACE_DECL
+
+# if defined (ACE_HAS_INLINED_OSCALLS)
+# if defined (ACE_INLINE)
+# undef ACE_INLINE
+# endif /* ACE_INLINE */
+# define ACE_INLINE inline
+# include "ace/OS_NS_stropts.inl"
+# endif /* ACE_HAS_INLINED_OSCALLS */
+
+# include /**/ "ace/post.h"
+#endif /* ACE_OS_NS_STROPTS_H */