]> git.saurik.com Git - apple/mdnsresponder.git/blob - mDNSMacOSX/BonjourTop/source/bjsocket.h
mDNSResponder-1096.0.2.tar.gz
[apple/mdnsresponder.git] / mDNSMacOSX / BonjourTop / source / bjsocket.h
1 //
2 // bjsocket.h
3 // TestTB
4 //
5 // Created by Terrin Eager on 10/24/12.
6 //
7 //
8
9 #ifndef __TestTB__bjsocket__
10 #define __TestTB__bjsocket__
11
12 #include <iostream>
13
14 #include <sys/socket.h>
15
16 #include "bjtypes.h"
17 #include "bjIPAddr.h"
18 #include "bjstring.h"
19
20 #include "Frame.h"
21
22
23 class BJSocket
24 {
25 public:
26
27 BJSocket();
28 virtual ~BJSocket();
29
30 bool Init();
31
32 bool CreateListenerIPv4(BJString interfaceName);
33 bool CreateListenerIPv6(BJString interfaceName);
34
35 bool Close();
36
37 int Read();
38
39 Frame m_CurrentFrame;
40
41 bool IsMulticastPacket();
42
43 int GetSockectHandle();
44
45 BJ_UINT8* GetBuffer();
46 BJIPAddr* GetSrcAddr();
47 BJIPAddr* GetDestAddr();
48
49 private:
50 void JoinMulticastv4(BJString interfaceName);
51 void JoinMulticastv6(BJString interfaceName);
52
53 bool CheckInterface();
54
55 BJ_UINT32 interfaceID;
56
57 int socketHandle;
58 BJ_UINT8* buffer;
59
60
61 int IPVersion;
62 BJIPAddr sourceAddr;
63 BJIPAddr destAddr;
64
65 struct msghdr socketMsghdr;
66 sockaddr_storage peerAddr;
67 struct iovec socketIovec[1];
68 struct cmsghdr socketCmsghdr[10];
69
70 };
71
72 class BJSelect
73 {
74 public:
75 BJSelect();
76
77 bool Add(BJSocket& s);
78 int Wait(int sec);
79
80 bool IsReady(BJSocket& s);
81
82 private:
83 fd_set socketSet;
84 int maxSocket;
85
86 };
87
88 #endif /* defined(__TestTB__bjsocket__) */