1 /****************************************************************************
3 * $Id: rmaallow.h 7 2003-05-30 02:18:02Z gabest $
5 * Copyright (C) 1995-1999 RealNetworks, Inc. All rights reserved.
7 * http://www.real.com/devzone
9 * This program contains proprietary
10 * information of Progressive Networks, Inc, and is licensed
11 * subject to restrictions on use and distribution.
13 * Interfaces related to allowance plugins.
21 * Forward declarations of some interfaces defined or used here-in.
23 typedef _INTERFACE IRMAValues IRMAValues
;
24 typedef _INTERFACE IRMABuffer IRMABuffer
;
25 typedef _INTERFACE IRMARequest IRMARequest
;
26 typedef _INTERFACE IRMAPlayerConnectionAdviseSinkManager IRMAPlayerConnectionAdviseSinkManager
;
27 typedef _INTERFACE IRMAPlayerConnectionAdviseSink IRMAPlayerConnectionAdviseSink
;
28 typedef _INTERFACE IRMAPlayerConnectionResponse IRMAPlayerConnectionResponse
;
29 typedef _INTERFACE IRMAPlayerController IRMAPlayerController
;
30 typedef _INTERFACE IRMAPlayerControllerProxyRedirect IRMAPlayerControllerProxyRedirect
;
32 /****************************************************************************
36 * IRMAPlayerConnectionAdviseSink
40 * Advise Sink which receives notification whenever a new player
41 * connects to the server.
43 * IID_IRMAPlayerConnectionAdviseSink:
45 * {00002600-0901-11d1-8B06-00A024406D59}
49 DEFINE_GUID(IID_IRMAPlayerConnectionAdviseSink
, 0x00002600, 0x901, 0x11d1,
50 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
53 #define INTERFACE IRMAPlayerConnectionAdviseSink
55 DECLARE_INTERFACE_(IRMAPlayerConnectionAdviseSink
, IUnknown
)
57 STDMETHOD(QueryInterface
) (THIS_
61 STDMETHOD_(ULONG
,AddRef
) (THIS
) PURE
;
63 STDMETHOD_(ULONG
,Release
) (THIS
) PURE
;
65 /* OnConnection is called when a new player has connected to the
66 * server. If the result is PNR_OK, then the plugin will be notified
67 * when certain events occur in the player's life cycle.
69 STDMETHOD(OnConnection
) (THIS_
70 IRMAPlayerConnectionResponse
* pResponse
) PURE
;
72 /* SetPlayerController is called by the server core to provide us with
73 * an interface which can stop, alert, redirect or otherwise control
74 * the player we are receiving notifications about.
76 STDMETHOD(SetPlayerController
) (THIS_
77 IRMAPlayerController
* pPlayerController
) PURE
;
79 /* SetRegistryID is called by the server core to provide us with the
80 * ID for this Player in the server registry. The plugin can use this
81 * registry ID to find out various information about the connected player.
83 STDMETHOD(SetRegistryID
) (THIS_ UINT32 ulPlayerRegistryID
) PURE
;
85 STDMETHOD(OnURL
) (THIS_ IRMARequest
* pRequest
) PURE
;
86 STDMETHOD(OnBegin
) (THIS
) PURE
;
87 STDMETHOD(OnStop
) (THIS
) PURE
;
88 STDMETHOD(OnPause
) (THIS
) PURE
;
89 STDMETHOD(OnDone
) (THIS
) PURE
;
92 /****************************************************************************
96 * IRMAPlayerConnectionResponse
100 * Response object for the PlayerConnectionAdviseSink.
102 * IID_IRMAPlayerConnectionResponse:
104 * {00002601-0901-11d1-8B06-00A024406D59}
108 DEFINE_GUID(IID_IRMAPlayerConnectionResponse
, 0x00002601, 0x901, 0x11d1,
109 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
112 #define INTERFACE IRMAPlayerConnectionResponse
114 DECLARE_INTERFACE_(IRMAPlayerConnectionResponse
, IUnknown
)
116 STDMETHOD(QueryInterface
) (THIS_
120 STDMETHOD_(ULONG
,AddRef
) (THIS
) PURE
;
122 STDMETHOD_(ULONG
,Release
) (THIS
) PURE
;
124 STDMETHOD(OnConnectionDone
) (THIS_ PN_RESULT status
) PURE
;
125 STDMETHOD(OnURLDone
) (THIS_ PN_RESULT status
) PURE
;
126 STDMETHOD(OnBeginDone
) (THIS_ PN_RESULT status
) PURE
;
127 STDMETHOD(OnStopDone
) (THIS_ PN_RESULT status
) PURE
;
128 STDMETHOD(OnPauseDone
) (THIS_ PN_RESULT status
) PURE
;
131 /****************************************************************************
135 * IRMAPlayerController
139 * Object created by the server core and given to the
140 * IRMAPlayerConnectionResponse object so that the response object
141 * can control the connected player.
143 * IID_IRMAPlayerController:
145 * {00002602-0901-11d1-8B06-00A024406D59}
149 DEFINE_GUID(IID_IRMAPlayerController
, 0x00002602, 0x901, 0x11d1,
150 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
153 #define INTERFACE IRMAPlayerController
155 DECLARE_INTERFACE_(IRMAPlayerController
, IUnknown
)
157 STDMETHOD(QueryInterface
) (THIS_
161 STDMETHOD_(ULONG
,AddRef
) (THIS
) PURE
;
163 STDMETHOD_(ULONG
,Release
) (THIS
) PURE
;
165 STDMETHOD(Pause
) (THIS
) PURE
;
166 STDMETHOD(Resume
) (THIS
) PURE
;
167 STDMETHOD(Disconnect
) (THIS
) PURE
;
168 STDMETHOD(AlertAndDisconnect
) (THIS_ IRMABuffer
* pAlert
) PURE
;
170 /* HostRedirect is called by a PlayerConnectionAdviseSink to redirect
171 * this player to another host and/or port, for the same URL. This
172 * method works with both RTSP and PNA protocols.
174 STDMETHOD(HostRedirect
) (THIS_ IRMABuffer
* pHost
,
177 /* NetworkRedirect is called by a PlayerConnectionAdviseSink to redirect
178 * this player to another URL. Note: This method is only available for
179 * redirecting an RTSP player connection to another RTSP URL.
181 STDMETHOD(NetworkRedirect
) (THIS_ IRMABuffer
* pURL
,
182 UINT32 ulSecsFromNow
) PURE
;
184 /* Redirect is called by a PlayerConnectionAdviseSink to redirect
185 * this player to another URL on the same server. For example, if
186 * pPartialURL were set to "welcome.rm", the player would be redirected
187 * to "current_protocol://current_host:current_port/welcome.rm". This
188 * method works with both RTSP and PNA protocols.
190 STDMETHOD(Redirect
) (THIS_ IRMABuffer
* pPartialURL
) PURE
;
193 /****************************************************************************
197 * IRMAPlayerConnectionAdviseSinkManager
201 * Manages the creation of IRMAPlayerConnectionAdviseSink objects
203 * IID_IRMAPlayerConnectionAdviseSinkManager:
205 * {00002603-0901-11d1-8B06-00A024406D59}
209 DEFINE_GUID(IID_IRMAPlayerConnectionAdviseSinkManager
, 0x00002603, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
212 #define INTERFACE IRMAPlayerConnectionAdviseSinkManager
214 DECLARE_INTERFACE_(IRMAPlayerConnectionAdviseSinkManager
, IUnknown
)
216 STDMETHOD(QueryInterface
) (THIS_
220 STDMETHOD_(ULONG
,AddRef
) (THIS
) PURE
;
222 STDMETHOD_(ULONG
,Release
) (THIS
) PURE
;
224 STDMETHOD(CreatePlayerConnectionAdviseSink
)
226 REF(IRMAPlayerConnectionAdviseSink
*) pPCAdviseSink
) PURE
;
229 /****************************************************************************
233 * IRMAPlayerControllerProxyRedirect
237 * QueryInterfaced from IRMAPlayerController. Allows 305 proxy redirect
238 * to be issued (as per RTSP spec).
240 * IID_IRMAPlayerControllerProxyRedirect:
242 * {00002607-0901-11d1-8B06-00A024406D59}
246 DEFINE_GUID(IID_IRMAPlayerControllerProxyRedirect
, 0x00002607, 0x901, 0x11d1,
247 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
250 #define INTERFACE IRMAPlayerControllerProxyRedirect
252 DECLARE_INTERFACE_(IRMAPlayerControllerProxyRedirect
, IUnknown
)
254 STDMETHOD(QueryInterface
) (THIS_
258 STDMETHOD_(ULONG
,AddRef
) (THIS
) PURE
;
260 STDMETHOD_(ULONG
,Release
) (THIS
) PURE
;
263 * This URL is just a hostname / port. It must be formatted like this:
264 * "rtsp://audio.real.com:554/".
266 * NOTE: You can *only* call this method between OnURL() and OnURLDone().
267 * NOTE: This method only works on RTSP connections.
269 STDMETHOD(NetworkProxyRedirect
) (THIS_ IRMABuffer
* pURL
) PURE
;
272 #endif /* _RMAALLOW_H_ */