]> git.vomp.tv Git - vompserver.git/blob - vompclient.h
Post also information about language preferences ar log in
[vompserver.git] / vompclient.h
1 /*
2     Copyright 2004-2008 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 /*
22   The new async protocol design forced the server side change from the mvpclient
23   class to the mess it is now. Maybe in a couple of versions time it will become
24   more apparent how better to design all this.
25   
26   The reason for the class split is that with the current Thread class system,
27   you can only have one thread per object. The vompclient class would have needed
28   two, one for RR stuff and one for the keepalives.
29   
30   So the new design is this: the VompClient class represents one connection from
31   one client as the MVPClient class did before. But because two threads are now
32   needed, a helper class VompClientRRProc contains all the RR processing functions,
33   and the thread needed to process them. All the state data is still kept in the
34   VompClient class.
35 */
36
37 #ifndef VOMPCLIENT_H
38 #define VOMPCLIENT_H
39
40 #include <stdio.h>
41 #include <pthread.h>
42 #include <signal.h>
43 #include <endian.h>
44
45 #include <unistd.h> // sleep
46
47 #ifndef VOMPSTANDALONE
48 class RecPlayer;
49 class MVPReceiver;
50 class cChannel;
51 class cRecordings;
52 class cPlugin;
53 #endif
54
55 #include "defines.h"
56 #include "tcp.h"
57 #include "config.h"
58 #include "media.h"
59 #include "i18n.h"
60 #include "vompclientrrproc.h"
61
62 class ResponsePacket;
63 class ServerMediaFile;
64 class SerializeBuffer;
65 class MediaPlayer;
66 class PictureReader;
67
68 class VompClient
69 {
70   friend class VompClientRRProc;
71   friend class PictureReader;
72
73   public:
74     VompClient(Config* baseConfig, char* configDir, char* logoDir, 
75         char* resourceDir, char* imageDir, char*cacheDir,  int tsocket);
76     ~VompClient();
77
78     int run();
79     // not for external use
80     void run2();
81     static int getNrClients();
82
83   private:
84     static int nr_clients;
85     static void incClients();
86     static void decClients();
87     
88     static ULLONG ntohll(ULLONG a);
89     static ULLONG htonll(ULLONG a);
90     
91     VompClientRRProc rrproc;
92     pthread_t runThread;
93     int initted;
94     Log* log;
95     TCP tcp;
96     Config config;
97     Config* baseConfig;
98     I18n i18n;
99     bool loggedIn;
100     char* configDir;
101
102     void netLog();
103     FILE* netLogFile;
104
105     //void cleanConfig();
106
107 #ifndef VOMPSTANDALONE
108     cChannel* channelFromNumber(ULONG channelNumber);
109     void writeResumeData();
110
111     MVPReceiver* lp;
112     cRecordings* recordingManager;
113     RecPlayer* recplayer;
114     static cPlugin * scraper;
115     static time_t lastScrapQuery;
116     static cPlugin*  scrapQuery();
117     PictureReader * pict;
118     char *logoDir;
119     char *imageDir;
120     char *resourceDir;
121     char *cacheDir;
122
123 #endif
124     MediaPlayer *media;
125     ServerMediaFile *mediaprovider;
126     
127     void setCharset(int charset);
128     int charcoding; // 1= latin1 2= UTF-8
129     cCharSetConv *charconvutf8;
130     cCharSetConv *charconvsys;
131     
132     
133 };
134
135 #endif
136