]> git.vomp.tv Git - vompclient.git/blob - vdrresponsepacket.h
Reverting changes in mutex
[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 #include <string>
33
34 #include "defines.h"
35
36 class VDR_ResponsePacket
37 {
38   public:
39     VDR_ResponsePacket();
40     ~VDR_ResponsePacket();
41     
42     void setResponse(ULONG requestID, UCHAR* packet, ULONG packetLength);
43     void setStream(ULONG streamID, ULONG flag, UCHAR* packet, ULONG packetLength, ULONG tchannelID);
44      
45     bool noResponse() { return (userData == NULL); };
46     int  serverError();
47     
48     ULONG getUserDataLength() { return userDataLength; }
49     ULONG getChannelID() { return channelID; }
50     ULONG getRequestID() { return requestID; }
51     ULONG getStreamID() { return streamID; }
52     ULONG getFlag() { return flag; }
53     
54     char*  extractString();
55     std::string  extractStdString();
56     UCHAR  extractUCHAR();
57     ULONG  extractULONG();
58     ULLONG extractULLONG();
59     long   extractLONG();
60         double extractdouble();
61
62     bool end();
63
64     void dumpUD();
65
66     // If you call this, the memory becomes yours. Free with free()
67     UCHAR* getUserData();
68
69   private:
70     UCHAR* userData;
71     ULONG userDataLength;
72     ULONG packetPos;
73     
74     ULONG channelID;
75     
76     ULONG requestID;
77     ULONG streamID;
78     
79     ULONG flag; // stream only
80         
81     bool ownBlock;
82 };
83
84 #endif
85