Jack2
1.9.9
Main Page
Related Pages
Modules
Classes
Files
File List
File Members
posix
JackSocketServerChannel.h
1
/*
2
Copyright (C) 2004-2008 Grame
3
4
This program is free software; you can redistribute it and/or modify
5
it under the terms of the GNU Lesser General Public License as published by
6
the Free Software Foundation; either version 2.1 of the License, or
7
(at your option) any later version.
8
9
This program is distributed in the hope that it will be useful,
10
but WITHOUT ANY WARRANTY; without even the implied warranty of
11
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
GNU Lesser General Public License for more details.
13
14
You should have received a copy of the GNU Lesser General Public License
15
along with this program; if not, write to the Free Software
16
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17
18
*/
19
20
#ifndef __JackSocketServerChannel__
21
#define __JackSocketServerChannel__
22
23
#include "JackSocket.h"
24
#include "JackPlatformPlug.h"
25
#include "JackRequestDecoder.h"
26
27
#include <poll.h>
28
#include <map>
29
30
namespace
Jack
31
{
32
33
class
JackServer;
34
39
class
JackSocketServerChannel
:
public
JackRunnableInterface
,
public
JackClientHandlerInterface
40
{
41
42
private
:
43
44
JackServerSocket
fRequestListenSocket;
// Socket to create request socket for the client
45
JackThread
fThread;
// Thread to execute the event loop
46
JackRequestDecoder
* fDecoder;
47
JackServer
* fServer;
48
49
pollfd* fPollTable;
50
bool
fRebuild;
51
std::map<int, std::pair<int, JackClientSocket*> > fSocketTable;
52
53
void
BuildPoolTable();
54
55
void
ClientCreate();
56
void
ClientKill(
int
fd);
57
58
void
ClientAdd(
detail::JackChannelTransactionInterface
* socket,
JackClientOpenRequest
* req,
JackClientOpenResult
*res);
59
void
ClientRemove(
detail::JackChannelTransactionInterface
* socket,
int
refnum);
60
61
int
GetFd(
JackClientSocket
* socket);
62
63
public
:
64
65
JackSocketServerChannel
();
66
~
JackSocketServerChannel
();
67
68
int
Open(
const
char
* server_name,
JackServer
* server);
// Open the Server/Client connection
69
void
Close();
// Close the Server/Client connection
70
71
int
Start();
72
void
Stop();
73
74
// JackRunnableInterface interface
75
bool
Init
();
76
bool
Execute();
77
};
78
79
}
// end of namespace
80
81
#endif
82
Jack::JackServerSocket
Definition:
JackSocket.h:76
Jack::JackRunnableInterface
The base class for runnable objects, that have an Init and Execute method to be called in a threa...
Definition:
JackThread.h:34
Jack::JackClientOpenRequest
NewClient request.
Definition:
JackRequest.h:238
Jack::JackClientOpenResult
NewClient result.
Definition:
JackRequest.h:278
Jack::JackServer
The Jack server.
Definition:
JackServer.h:46
Jack::JackSocketServerChannel::Init
bool Init()
Definition:
JackSocketServerChannel.cpp:211
Jack::JackSocketServerChannel
JackServerChannel using sockets.
Definition:
JackSocketServerChannel.h:39
Jack::JackClientSocket
Client socket.
Definition:
JackSocket.h:41
Jack::JackRequestDecoder
Request decoder.
Definition:
JackRequestDecoder.h:46
Jack::detail::JackChannelTransactionInterface
Definition:
JackChannel.h:38
Jack::JackClientHandlerInterface
Definition:
JackRequestDecoder.h:32
Jack::JackMachThread
Darwin threads. Real-time threads are actually "time constraint" threads.
Definition:
JackMachThread.h:92
Generated by
1.8.5