Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4UIGainServer.hh
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26//
27// $Id$
28//
29
30
31#ifndef G4UIGainServer_h
32#define G4UIGainServer_h 1
33
34#ifndef WIN32
35
36#include <stdio.h>
37#include <sys/types.h>
38#include <sys/socket.h>
39//#include <sys/un.h>
40#include <netinet/in.h>
41#include <unistd.h>
42
43#include <iostream>
44#include <fstream>
45#include "globals.hh"
46#include "G4UImanager.hh"
47#include "G4VBasicShell.hh"
48
49#define SOCK_NAME "/tmp/socket"
50#define DEFAULT_PORT 40000;
51
54
55// class description:
56//
57// This class is similar to G4UIGAG.
58// While G4UIGAG provides direct connection to GAG via pipe,
59// G4UIGainServer provides socket connection to remote Gain client.
60// Gain = Geant4 adaptive interface for network
61// Its usage is same as G4UIGAG, except that Geant4 application waits
62// a connection from a Gain client.
63
65private:
67 G4String promptCharacter;
68 G4UImanager* UI;
69 UImode uiMode;
70 G4String JVersion;
71 G4String TVersion;
72
73 // shell
74 // G4VUIshell* shell;
75
76 // program states
77 G4bool iExit;
78 G4bool iCont;
79
80 // need for socket
81 int socketD[3];
82 int port;
83 struct sockaddr_in saddr;
84 struct sockaddr_in caddr;
85 int len;
86 int ret;
87 char buf[1024];
88
89 // --- the following are used by Notify*Update() and *Updated()
90 void GetNewTreeStructure( G4UIcommandTree*,int recursiveLevel);
91 void GetNewTreeValues( G4UIcommandTree*,int recursiveLevel);
92
93 std::vector<G4String> previousTreeCommands;
94 std::vector<G4String> newTreeCommands;
95 std::vector<G4String> previousTreeParams;
96 std::vector<G4String> newTreeParams;
97 std::vector<G4UIcommand*> previousTreePCP;
98 std::vector<G4UIcommand*> newTreePCP;
99
100public:
101 // These methods are implementation of corresponding virtual methods
102 // of G4UIsession class.
103
104 // A GainServer session "gainSession" is instantiated.
105 // G4cout stream is redirected by default to the constructed instance.
106 // Usage: G4UIsession * gainSession = new G4UIGainServer();
107 // "gainSession" is started.
108 // Usage: gainSession->SessionStart();
109 // "gainSession" is deleted.
110 // Usage: delete gainSession;
111 //
112
114 virtual void PauseSessionStart(const G4String& msg);
115 virtual G4int ReceiveG4cout(const G4String& coutString);
116 virtual G4int ReceiveG4cerr(const G4String& cerrString);
117
118public:
119 // G4UIGainServer(G4VUIshell* aShell=0);
121 //G4UIGainServer(void){}
123 //~G4UIGainServer(void){}
124
125 // void SetPrompt(const G4String& prompt);
126 void SessionTerminate();
129
130private:
131 virtual void ExecuteCommand(const G4String& aCommand);
132 virtual G4bool GetHelpChoice(G4int& aInt);
133 virtual void ExitHelp() const;
134 bool SetUPServer();
135 void WaitingConnection();
136 void CloseConnection();
137
138 void ChangeDirectory(G4String);
139 void ListDirectory(G4String);
140 void TerminalHelp(G4String);
141 G4String ModifyPrefix(G4String);
142 G4UIcommandTree * FindDirPath(G4String);
143 void ShowCurrent(G4String);
144 G4String GetFullPath(G4String);
145
146 void SendCommandProperties(G4UIcommandTree *);
147 void SendParameterProperties(G4UIcommandTree *);
148 void SendAParamProperty(G4UIcommand *);
149 void SendATclParamProperty(G4UIcommand *);
150 void CodeGenJavaTree(G4UIcommandTree *,int recursiveLevel);
151 void CodeGenJavaParams(G4UIcommandTree *,int recursiveLevel);
152 void CodeGenTclTree(G4UIcommandTree *, int recursiveLevel);
153 void CodeGenTclParams(G4UIcommandTree *, int recursiveLevel);
154 void SendDisableList(G4UIcommandTree *, int recursiveLevel);
155
156 void NotifyStateChange(void);
157 void NotifyCommandUpdate(void);
158 void NotifyParameterUpdate(G4UIcommand *);
159
160 int CommandUpdated(void);
161 void UpdateState(void);
162 void UpdateParamVal(void); // if param is updated,
163 // call NotifyParameterUpdate()
164
165
166};
167
168#endif
169
170#endif
171
172
int G4int
Definition: G4Types.hh:66
bool G4bool
Definition: G4Types.hh:67
ChangeOfTree
Definition: G4UIGAG.hh:45
UImode
Definition: G4UIGAG.hh:44
@ addedAndDeleted
@ added
@ deleted
@ notChanged
UImode
@ tcl_mode
@ java_mode
@ terminal_mode
void Prompt(G4String)
virtual G4int ReceiveG4cout(const G4String &coutString)
G4UIsession * SessionStart()
G4String GetCommand()
virtual void PauseSessionStart(const G4String &msg)
virtual G4int ReceiveG4cerr(const G4String &cerrString)