]> git.vomp.tv Git - vompclient-marten.git/blob - vdrresponsepacket.h
Prev channel and prebuffering osd fixes
[vompclient-marten.git] / vdrresponsepacket.h
1 /*
2     Copyright 2007 Chris Tallon
3
4     This file is part of VOMP.
5
6     VOMP is free software; you can redistribute it and/or modify
7     it under the terms of the GNU General Public License as published by
8     the Free Software Foundation; either version 2 of the License, or
9     (at your option) any later version.
10
11     VOMP is distributed in the hope that it will be useful,
12     but WITHOUT ANY WARRANTY; without even the implied warranty of
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14     GNU General Public License for more details.
15
16     You should have received a copy of the GNU General Public License
17     along with VOMP; if not, write to the Free Software
18     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
19 */
20
21 #ifndef VDRRESPONSEPACKET_H
22 #define VDRRESPONSEPACKET_H
23
24 #ifndef WIN32
25 #include <arpa/inet.h>
26 #else
27
28 #endif
29
30 #include <stdlib.h>
31 #include <string.h>
32
33 #include "defines.h"
34
35 class VDR_ResponsePacket
36 {
37   public:
38     VDR_ResponsePacket();
39     ~VDR_ResponsePacket();
40     
41     void setResponse(ULONG requestID, UCHAR* packet, ULONG packetLength);
42     void setStream(ULONG streamID, UCHAR* packet, ULONG packetLength);
43      
44     bool noResponse() { return (userData == NULL); };
45     int  serverError();
46     
47     ULONG getUserDataLength() { return userDataLength; }
48     ULONG getChannelID() { return channelID; }
49     ULONG getRequestID() { return requestID; }
50     ULONG getStreamID() { return streamID; }
51     
52     char*  extractString();
53     UCHAR  extractUCHAR();
54     ULONG  extractULONG();
55     ULLONG extractULLONG();
56     long   extractLONG();
57
58     bool end();
59
60     void dumpUD();
61
62     // If you call this, the memory becomes yours. Free with free()
63     UCHAR* getUserData();
64
65   private:
66     UCHAR* userData;
67     ULONG userDataLength;
68     ULONG packetPos;
69     
70     ULONG channelID;
71     
72     ULONG requestID;
73     ULONG streamID;
74         
75     bool ownBlock;
76 };
77
78 #endif
79