rtoss - Blame information for rev 26

Subversion Repositories:
Rev:
Rev Author Line No. Line
14 roytam 1 #if !defined(__RECEIVER_H_INCLUDED)
2 #define __RECEIVER_H_INCLUDED
3  
4 #if _MSC_VER > 1000
5 #pragma once
6 #endif // _MSC_VER > 1000
7  
8 #include <winsock.h>
9 #include "helper.h"
10 #include "MultiBuff.h"
11  
12 #define RECV_BUFF_SIZE                  2048
13 #define RECV_HTTP                               80
14 #define RECV_INTERVAL                   200000          // microseconds
15 #define RECV_RECEIVE_TIMEOUT    5000000         // 5sec
16 #define RECV_CONNECT_TIMEOUT    15000000        // 15sec
17 #define DEF_USER_AGENT                  _T("Unknown")
18  
19 #define ICY_REDIRECT    302
20 #define ICY_OK                  200
21  
22 typedef struct _tagRecvBuf
23 {
24         BYTE pbBuf[RECV_BUFF_SIZE];
25         DWORD cbRecv;
26         DWORD cbUsed;
27         _tagRecvBuf() {cbRecv = 0; cbUsed = 0;}
28 }RECV_BUF;
29  
30 class CReceiver
31 {
32 public:
33         CReceiver();
34         ~CReceiver();
35  
36         BOOL Open(LPCTSTR pszURL);
37         BOOL Connect();
38         void Disconnect();
39         void Close();
40         void Stop() {m_fStop = TRUE;}
41         void SetMessageWindow(HWND hwndMessage) {m_hwndMessage = hwndMessage;}
42         BOOL IsConnected() {return m_hSock != INVALID_SOCKET;}
43         BOOL IsEos() {return m_fEos;}
44         BOOL IsShoutcast() {return m_fShoutcast;}
45  
46         void SetProxy(BOOL fUseProxy, LPCTSTR pszProxy);
47         BOOL GetProxy(LPTSTR pszProxy);
48         void SetUserAgent(LPCTSTR pszAgent);
49         void GetUserAgent(LPTSTR pszAgent);
50  
51         BOOL SetBufferCount(int nCount);
52         int GetBufferCount();
53         BOOL SetPrebufferingCount(int nCount);
54         int GetPrebufferingCount();
55         int GetBufferingCount();
56         int GetStatus();
57         void GetBufferInfo(DWORD* pcbTotal, DWORD* pcbBuffered);
58  
59         BOOL Read(LPBYTE pbBuffer, DWORD cbBuffer, LPDWORD pcbRead);
60         BOOL GetStreamInfo(LPTSTR pszName, LPTSTR pszGenre, LPTSTR pszURL);
61         BOOL GetStreamTitle(LPTSTR pszTitle);
26 roytam 62         void SetStreamName(LPTSTR pszName);
14 roytam 63  
64 protected:
65         DWORD ReceiverThread();
66         static DWORD WINAPI ReceiverThreadProc(LPVOID pParam);
67  
68         BOOL ConnectServer(LPCTSTR pszURL, LPTSTR pszRedirect);
69         void DisconnectServer();
70         BOOL PrepareBuffer();
71         void UnprepareBuffer();
72         int CheckMetaData(LPBYTE pbBuf, int cbBuf);
73         void NotifyMessage(UINT uMsg, WPARAM wParam = 0, LPARAM lParam = 0);
74  
75 protected:
76         HWND            m_hwndMessage;
77         BOOL            m_fInitialized;
78         CCritSec        m_csecBuf;
79         CCritSec        m_csecConnect;
80         HANDLE  m_hThread;
81         DWORD   m_dwThread;
82         int             m_hSock;
83         int             m_cbMetaData;
84         int             m_cbMetaDataInterval;
85  
86         TCHAR   m_szURL[MAX_URL];
87         TCHAR   m_szProxy[MAX_URL];
88         TCHAR   m_szUserAgent[MAX_URL];
89         BOOL    m_fUseProxy;
90  
91         TCHAR   m_szIcyName[MAX_URL];
92         TCHAR   m_szIcyGenre[MAX_URL];
93         TCHAR   m_szIcyURL[MAX_URL];
94         BOOL    m_fShoutcast;
95  
96         BYTE    m_bMetaDataBuf[257];
97         int             m_cbMetaDataBuf;
98  
99         BOOL    m_fStop;
100         BOOL    m_fEos;
101  
102         int             m_cBuf;
103         int             m_cPreBuf;
104         CEvent          m_eventStart;
105         CMultiBuff      m_listBuf;
106         CEvent          m_eventBuf;
107         CMultiBuff      m_listBufFree;
108         CEvent          m_eventBufFree;
109 };
110  
111 #endif // !defined(__RECEIVER_H_INCLUDED)