GSI Object Oriented Online Offline (Go4)
GO4-6.4.0
Loading...
Searching...
No Matches
Go4Socket
TGo4SocketSignalHandler.cxx
Go to the documentation of this file.
1
// $Id$
2
//-----------------------------------------------------------------------
3
// The GSI Online Offline Object Oriented (Go4) Project
4
// Experiment Data Processing at EE department, GSI
5
//-----------------------------------------------------------------------
6
// Copyright (C) 2000- GSI Helmholtzzentrum fuer Schwerionenforschung GmbH
7
// Planckstr. 1, 64291 Darmstadt, Germany
8
// Contact: http://go4.gsi.de
9
//-----------------------------------------------------------------------
10
// This software can be used under the license agreements as stated
11
// in Go4License.txt file which is part of the distribution.
12
//-----------------------------------------------------------------------
13
14
#include "
TGo4SocketSignalHandler.h
"
15
16
17
Int_t
TGo4SocketSignalHandler::fgiLastSignal
= 0;
// unix signal id
18
19
TGo4SocketSignalHandler::TGo4SocketSignalHandler
(Int_t signum, Bool_t enabled)
20
{
21
SetSignalAction
(signum,enabled);
22
}
23
24
TGo4SocketSignalHandler::~TGo4SocketSignalHandler
()
25
{
26
}
27
28
void
TGo4SocketSignalHandler::Handle
(
int
signum)
29
{
30
SetSignalAction
(signum, 0);
31
// optional part:
32
// if(signum == SIGWINCH)
33
// {
34
// //TGo4SocketSignalHandler::fgiLastSignal = SIGWINCH;
35
// }
36
// end optional part
37
TGo4SocketSignalHandler::fgiLastSignal
= signum;
38
SetSignalAction
(signum,1);
39
}
40
41
#ifndef _MSC_VER
42
43
#include <signal.h>
44
45
void
TGo4SocketSignalHandler::SetSigWINCH
(Bool_t enabled)
46
{
47
SetSignalAction
(SIGWINCH, enabled);
48
}
49
50
void
TGo4SocketSignalHandler::SetSignalAction
(Int_t signum, Bool_t enabled)
51
{
52
struct
sigaction new_action, old_action;
53
54
/* Set up the structure to specify the new action. */
55
if
(enabled)
56
new_action.sa_handler =
TGo4SocketSignalHandler::Handle
;
57
else
58
new_action.sa_handler = SIG_IGN;
59
60
sigemptyset(&new_action.sa_mask);
61
new_action.sa_flags = 0;
62
sigaction(signum,
nullptr
, &old_action);
63
if
(enabled)
64
sigaction(signum, &new_action,
nullptr
);
65
}
66
67
void
TGo4SocketSignalHandler::DisableSigPipe
()
68
{
69
signal(SIGPIPE, SIG_IGN);
70
}
71
72
bool
TGo4SocketSignalHandler::IsLastSignalWINCH
()
73
{
74
return
GetLastSignal
() == SIGWINCH;
75
}
76
77
#else
78
79
// do nothing in windows
80
81
void
TGo4SocketSignalHandler::SetSignalAction
(Int_t signum, Bool_t enabled)
82
{
83
}
84
85
void
TGo4SocketSignalHandler::DisableSigPipe
()
86
{
87
}
88
89
void
TGo4SocketSignalHandler::SetSigWINCH
(Bool_t)
90
{
91
}
92
93
bool
TGo4SocketSignalHandler::IsLastSignalWINCH
()
94
{
95
return
false
;
96
}
97
98
#endif
99
100
Int_t
TGo4SocketSignalHandler::GetLastSignal
()
101
{
102
return
fgiLastSignal
;
103
}
104
105
void
TGo4SocketSignalHandler::SetLastSignal
(Int_t v)
106
{
107
fgiLastSignal
= v;
108
}
TGo4SocketSignalHandler.h
TGo4SocketSignalHandler::TGo4SocketSignalHandler
TGo4SocketSignalHandler()=delete
TGo4SocketSignalHandler::Handle
static void Handle(int)
Definition
TGo4SocketSignalHandler.cxx:28
TGo4SocketSignalHandler::SetSignalAction
static void SetSignalAction(Int_t signum, Bool_t enabled=kTRUE)
Definition
TGo4SocketSignalHandler.cxx:50
TGo4SocketSignalHandler::IsLastSignalWINCH
static bool IsLastSignalWINCH()
Definition
TGo4SocketSignalHandler.cxx:72
TGo4SocketSignalHandler::SetLastSignal
static void SetLastSignal(Int_t v=0)
Definition
TGo4SocketSignalHandler.cxx:105
TGo4SocketSignalHandler::~TGo4SocketSignalHandler
virtual ~TGo4SocketSignalHandler()
Definition
TGo4SocketSignalHandler.cxx:24
TGo4SocketSignalHandler::DisableSigPipe
static void DisableSigPipe()
Definition
TGo4SocketSignalHandler.cxx:67
TGo4SocketSignalHandler::GetLastSignal
static Int_t GetLastSignal()
Definition
TGo4SocketSignalHandler.cxx:100
TGo4SocketSignalHandler::fgiLastSignal
static Int_t fgiLastSignal
Definition
TGo4SocketSignalHandler.h:43
TGo4SocketSignalHandler::SetSigWINCH
static void SetSigWINCH(Bool_t enabled=kTRUE)
Definition
TGo4SocketSignalHandler.cxx:45
Generated by
1.13.2