00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef ACE_UPIPE_STREAM_H
00016 #define ACE_UPIPE_STREAM_H
00017 #include "ace/pre.h"
00018
00019 #include "ace/Stream.h"
00020
00021 #if !defined (ACE_LACKS_PRAGMA_ONCE)
00022 # pragma once
00023 #endif
00024
00025 #if defined (ACE_HAS_THREADS)
00026
00027 #include "ace/SPIPE.h"
00028 #include "ace/Message_Queue.h"
00029 #include "ace/UPIPE_Addr.h"
00030
00031 ACE_BEGIN_VERSIONED_NAMESPACE_DECL
00032
00033
00034
00035
00036
00037
00038 class ACE_Export ACE_UPIPE_Stream : public ACE_SPIPE
00039 {
00040 public:
00041 friend class ACE_UPIPE_Acceptor;
00042 friend class ACE_UPIPE_Connector;
00043
00044 typedef ACE_Stream<ACE_SYNCH> MT_Stream;
00045
00046
00047
00048 ACE_UPIPE_Stream (void);
00049
00050 virtual ~ACE_UPIPE_Stream (void);
00051
00052
00053 int close (void);
00054
00055
00056 ACE_HANDLE get_handle (void) const;
00057
00058
00059
00060
00061 int send (ACE_Message_Block *mb_p,
00062 ACE_Time_Value *timeout = 0);
00063
00064
00065
00066 int recv (ACE_Message_Block *&mb_p,
00067 ACE_Time_Value *timeout = 0);
00068
00069
00070
00071
00072 ssize_t send (const char *buffer,
00073 size_t n,
00074 ACE_Time_Value *timeout = 0);
00075
00076
00077
00078 ssize_t recv (char *buffer,
00079 size_t n,
00080 ACE_Time_Value *timeout = 0);
00081
00082
00083
00084 ssize_t send_n (const char *buffer,
00085 size_t n,
00086 ACE_Time_Value *timeout = 0);
00087
00088
00089
00090 ssize_t recv_n (char *buffer,
00091 size_t n,
00092 ACE_Time_Value *timeout = 0);
00093
00094
00095 int control (int cmd, void *val) const;
00096
00097
00098 int get_remote_addr (ACE_UPIPE_Addr &remote_sap) const;
00099
00100
00101 void dump (void) const;
00102
00103
00104 ACE_ALLOC_HOOK_DECLARE;
00105
00106
00107 typedef ACE_UPIPE_Addr PEER_ADDR;
00108
00109 private:
00110
00111
00112 ACE_Message_Block *mb_last_;
00113
00114
00115 ACE_UPIPE_Addr remote_addr_;
00116
00117
00118
00119 MT_Stream stream_;
00120
00121
00122
00123 int reference_count_;
00124
00125 #if defined (ACE_MT_SAFE) && (ACE_MT_SAFE != 0)
00126
00127 ACE_Thread_Mutex lock_;
00128 #endif
00129 };
00130
00131 ACE_END_VERSIONED_NAMESPACE_DECL
00132
00133 #if defined (__ACE_INLINE__)
00134 #include "ace/UPIPE_Stream.inl"
00135 #endif
00136
00137 #endif
00138
00139 #include "ace/post.h"
00140
00141 #endif