-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCFileSender.h
More file actions
157 lines (148 loc) · 4.47 KB
/
Copy pathCFileSender.h
File metadata and controls
157 lines (148 loc) · 4.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#pragma once
class CMainFrame;
class CMySocket;
struct IDCCChatEvents
{
virtual void OnLineRead(LPCTSTR nick,LPCTSTR line) = 0;
virtual void OnSockConnected(LPCTSTR nick,CSocketAddress &sa) = 0;
virtual void OnSockClose(LPCTSTR nick,LPCTSTR msg) = 0;
};
struct IDCCChat
{
virtual void SendLine(LPCTSTR line) = 0;
virtual void Close() = 0;
};
struct IFileTransferEvents
{
virtual void OnInit(LPCTSTR file, LPCTSTR nick, u_long filesize) = 0;
virtual void OnConnect(const CSocketAddress& sa) = 0;
virtual void OnRead(int totalRead) = 0;
virtual void OnWrite(int totalWritten) = 0;
virtual void OnClose() = 0;
virtual void OnError(LPCTSTR msg) = 0;
};
struct IFileTransfer
{
virtual void Abort() = 0;
};
class CFileSender : public ISocketEvents, public IFileTransfer
{
CMainFrame& m_frame;
CMySocket *m_ps;
CPath m_path;
CDataBuffer<BYTE> m_db;
CString m_nick;
volatile u_long m_totalSent;
volatile bool m_bAck;
IFileTransferEvents* m_pSink;
//
BOOL SendCTCPRequest(CSocketAddress& sa);
public:
CFileSender(CMainFrame& frame, CPath& path, LPCTSTR nick, IFileTransferEvents* pSink);
virtual ~CFileSender();
public:
void SetSink(IFileTransferEvents* pSink)
{
m_pSink = pSink;
}
virtual void OnSockError(int error);
virtual void OnSockRead(int error);
virtual void OnSockWrite(int error);
virtual void OnSockConnect(int error) {}
virtual void OnSockClose(int error);
virtual void OnSockAccept(int error);
virtual void OnSockOutOfBand(int error) {}
virtual void OnSockConnecting(void) {}
virtual void OnSockConnectTimeout(void) {}
virtual void OnSockResolvingAddress(void) {}
virtual void OnSockAddressResolved(int error) {}
// IFileTransfer
virtual void Abort();
};
class CFileReceiver : public ISocketEvents, public IFileTransfer
{
CMainFrame& m_frame;
CMySocket* m_ps;
CPath m_path;
CDataBuffer<BYTE> m_db;
CString m_nick;
volatile u_long m_totalRecv;
CSocketAddress m_sa;
const u_long m_filesize;
IFileTransferEvents* m_pSink;
public:
CFileReceiver(CMainFrame& frame, CPath& path, LPCTSTR nick,CSocketAddress &sa,u_long filesize, IFileTransferEvents *pSink);
virtual ~CFileReceiver();
public:
void SetSink(IFileTransferEvents* pSink)
{
m_pSink = pSink;
}
virtual void OnSockError(int error);
virtual void OnSockRead(int error);
virtual void OnSockWrite(int error);
virtual void OnSockConnect(int error);
virtual void OnSockClose(int error);
virtual void OnSockAccept(int error) {}
virtual void OnSockOutOfBand(int error) {}
virtual void OnSockConnecting(void) {}
virtual void OnSockConnectTimeout(void) {}
virtual void OnSockResolvingAddress(void) {}
virtual void OnSockAddressResolved(int error) {}
// IFileTransfer
virtual void Abort();
};
class CChatSender : public ISocketEvents,public IDCCChat
{
CMainFrame& m_frame;
CMySocket* m_ps;
CString m_nick;
IDCCChatEvents* m_pSink;
BOOL SendCTCPRequest(CSocketAddress& sa);
BOOL SendCTCPClose();
public:
CChatSender(CMainFrame& frame, LPCTSTR nick, IDCCChatEvents* pSink);
virtual ~CChatSender();
public:
virtual void OnSockError(int error) {};
virtual void OnSockRead(int error);
virtual void OnSockWrite(int error) {};
virtual void OnSockConnect(int error) {}
virtual void OnSockClose(int error);
virtual void OnSockAccept(int error);
virtual void OnSockOutOfBand(int error) {}
virtual void OnSockConnecting(void) {}
virtual void OnSockConnectTimeout(void) {}
virtual void OnSockResolvingAddress(void) {}
virtual void OnSockAddressResolved(int error) {}
//
virtual void SendLine(LPCTSTR msg);
virtual void Close();
};
class CChatReceiver : public ISocketEvents, public IDCCChat
{
CMainFrame& m_frame;
CMySocket* m_ps;
CString m_nick;
IDCCChatEvents* m_pSink;
CSocketAddress m_sa;
BOOL SendCTCPClose();
public:
CChatReceiver(CMainFrame& frame, LPCTSTR nick, CSocketAddress &sa,IDCCChatEvents* pSink);
virtual ~CChatReceiver();
public:
virtual void OnSockError(int error) {}
virtual void OnSockRead(int error);
virtual void OnSockWrite(int error);
virtual void OnSockConnect(int error);
virtual void OnSockClose(int error);
virtual void OnSockAccept(int error) {}
virtual void OnSockOutOfBand(int error) {}
virtual void OnSockConnecting(void) {}
virtual void OnSockConnectTimeout(void) {}
virtual void OnSockResolvingAddress(void) {}
virtual void OnSockAddressResolved(int error) {}
//
virtual void SendLine(LPCTSTR msg);
virtual void Close();
};