summaryrefslogtreecommitdiff
path: root/tools/socket.h
diff options
context:
space:
mode:
authorschmirl <schmirl>2009-02-13 10:39:40 +0000
committerschmirl <schmirl>2009-02-13 10:39:40 +0000
commite3599df3083ec6aa9b8656589a171e2c5d3d7e7a (patch)
tree875d67c52b228d945bf95e640ef57f1270319f72 /tools/socket.h
parentfa06a6068bd47868fe65b24af8f0a469ae6b46a6 (diff)
downloadvdr-plugin-streamdev-e3599df3083ec6aa9b8656589a171e2c5d3d7e7a.tar.gz
vdr-plugin-streamdev-e3599df3083ec6aa9b8656589a171e2c5d3d7e7a.tar.bz2
Added IGMP Multicast server
Modified Files: Tag: v0_4 CONTRIBUTORS HISTORY Makefile README i18n.c server/component.c server/component.h server/connection.c server/connection.h server/livefilter.c server/server.c server/setup.c server/setup.h server/streamer.c server/streamer.h streamdev/streamdevhosts.conf tools/socket.c tools/socket.h Added Files: Tag: v0_4 patches/vdr-cap_net_raw.diff server/componentIGMP.c server/componentIGMP.h server/connectionIGMP.c server/connectionIGMP.h
Diffstat (limited to 'tools/socket.h')
-rw-r--r--tools/socket.h16
1 files changed, 12 insertions, 4 deletions
diff --git a/tools/socket.h b/tools/socket.h
index 23272ec..3dc7a33 100644
--- a/tools/socket.h
+++ b/tools/socket.h
@@ -18,9 +18,10 @@ private:
struct sockaddr_in m_RemoteAddr;
int m_Type;
+ int m_Protocol;
public:
- cTBSocket(int Type = SOCK_STREAM);
+ cTBSocket(int Type = SOCK_STREAM, int Protocol = 0);
virtual ~cTBSocket();
/* See cTBSource::SysRead()
@@ -97,15 +98,22 @@ public:
};
inline ssize_t cTBSocket::SysRead(void *Buffer, size_t Length) const {
- if (m_Type == SOCK_DGRAM) {
+ if (m_Type == SOCK_STREAM)
+ return ::recv(*this, Buffer, Length, 0);
+ else {
socklen_t len = sizeof(m_RemoteAddr);
return ::recvfrom(*this, Buffer, Length, 0, (sockaddr*)&m_RemoteAddr, &len);
- } else
- return ::recv(*this, Buffer, Length, 0);
+ }
}
inline ssize_t cTBSocket::SysWrite(const void *Buffer, size_t Length) const {
return ::send(*this, Buffer, Length, 0);
+ if (m_Type == SOCK_STREAM)
+ return ::send(*this, Buffer, Length, 0);
+ else {
+ socklen_t len = sizeof(m_RemoteAddr);
+ return ::sendto(*this, Buffer, Length, 0, (sockaddr*)&m_RemoteAddr, len);
+ }
}
#endif // TOOLBOX_SOCKET_H