]> git.vomp.tv Git - vompclient-marten.git/blob - vdrresponsepacket.h
Windows updates
[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, 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
59     bool end();
60
61     void dumpUD();
62
63     // If you call this, the memory becomes yours. Free with free()
64     UCHAR* getUserData();
65
66   private:
67     UCHAR* userData;
68     ULONG userDataLength;
69     ULONG packetPos;
70     
71     ULONG channelID;
72     
73     ULONG requestID;
74     ULONG streamID;
75     
76     ULONG flag; // stream only
77         
78     bool ownBlock;
79 };
80
81 #endif
82