-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathHubCenter.cpp
More file actions
96 lines (87 loc) · 2 KB
/
Copy pathHubCenter.cpp
File metadata and controls
96 lines (87 loc) · 2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include "stdafx.h"
#include "HubCenter.h"
#include "Prefs.h"
#include "ServerChennel.h"
#include "ScriptUser.h"
#include "KeyboardUser.h"
#include "SocketUser.h"
#include "LogUser.h"
HubCenter::HubCenter(void)
{
RunSignal =0;
mControl = NULL;
mLogIndex =0;
}
HubCenter::~HubCenter(void)
{
}
ScriptUser * HubCenter::GetScriptor()
{
return (ScriptUser *)mUsers[0];
}
LogUser * HubCenter::GetLogger()
{
if( mLogIndex>0 ) return (LogUser *)mUsers[mLogIndex];
return NULL;
}
void HubCenter::Build()
{
mExecute.SetCenter(this);
mIO.Build(&mUsers);
if( gPrefs->mListenPort>0 ) {
Trace::traceEvent(TRACE_NORMAL,"controll port set to %d",gPrefs->mListenPort);
mControl = new CServerChennel(gPrefs->mListenPort);
if( mControl->OpenChennel()<0 ){
Trace::traceEvent(TRACE_WARNING,"controll setup failure");
exit(1);
}
} else Trace::traceEvent(TRACE_NORMAL,"controll is disabled");
mUsers.Add(new ScriptUser(gPrefs->ScriptFile(),&mExecute));
if( gPrefs->mKbEnable ){
Trace::traceEvent(TRACE_NORMAL,"keyboard is enable...");
mUsers.Add(new KeyboardUser(&mExecute));
mUsers[1]->onConnected();
} else{
Trace::traceEvent(TRACE_NORMAL,"keyboard is disabled");
mUsers.Add(new LogUser(this));
mUsers[1]->SetTimeOut(gPrefs->mKaTime1,gPrefs->mKaTime2);
mUsers[1]->onConnected();
}
}
void HubCenter::Quit()
{
if( mControl ) mControl->CloseChennel();
RunSignal = 0;
}
void HubCenter::Run()
{
RunSignal = 1;
Trace::traceEvent(TRACE_NORMAL,"service run.....");
while(RunSignal){
if( (mIO.Run()+mUsers.Run())<1 ){
for( int i=0;i<mUsers.Length();i++){
if( mUsers[i]->isClosed() ){
mUsers.Remove(i);
break;
}
}
SLEEP(50);
}
if( mControl ){
CChennel * p = mControl->ReadSocket();
if( p ){
SocketUser * u = new SocketUser(p,&mExecute);
mUsers.Add( u);
u->onConnected();
}
}
}
Trace::traceEvent(TRACE_NORMAL,"service down completed.");
}
void HubCenter::Cleanup()
{
mUsers.RemoveAll();
mIO.RemoveAll();
if( mControl ) delete mControl;
mControl = NULL;
}