]> git.vomp.tv Git - vompclient.git/blob - vdrresponsepacket.h
0d60be0e3bc71387b407fe1428dc7f4a1fef6a0f
[vompclient.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, ULONG flag, 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     ULONG getFlag() { return flag; }
52     
53     char*  extractString();
54     UCHAR  extractUCHAR();
55     ULONG  extractULONG();
56     ULLONG extractULLONG();
57     long   extractLONG();
58         double extractdouble();
59
60     bool end();
61
62     void dumpUD();
63
64     // If you call this, the memory becomes yours. Free with free()
65     UCHAR* getUserData();
66
67   private:
68     UCHAR* userData;
69     ULONG userDataLength;
70     ULONG packetPos;
71     
72     ULONG channelID;
73     
74     ULONG requestID;
75     ULONG streamID;
76     
77     ULONG flag; // stream only
78         
79     bool ownBlock;
80 };
81
82 #endif
83