25 _last_poll_time = 0.0f;
30 _client_thread =
nullptr;
43 Devices devices_copy = _devices;
44 for (di = devices_copy.begin(); di != devices_copy.end(); ++di) {
45 DevicesByName &dbn = (*di).second;
46 DevicesByName::iterator dbni;
47 for (dbni = dbn.begin(); dbni != dbn.end(); ++dbni) {
60 _client_thread->join(&ret);
76 <<
"Attempt to fork client thread twice.\n";
80 if (asynchronous_clients) {
81 _sleep_time = (int)(1000000 * poll_time);
83 _client_thread = thread::create(&st_callback,
this);
85 if (device_cat.is_debug()) {
87 <<
"fork_asynchronous_thread() - forking client thread"
116 get_device(
TypeHandle device_type,
const std::string &device_name) {
117 DevicesByName &dbn = _devices[device_type];
119 DevicesByName::iterator dbni;
120 dbni = dbn.find(device_name);
121 if (dbni != dbn.end()) {
123 return (*dbni).second;
127 PT(
ClientDevice) device = make_device(device_type, device_name);
129 if (device !=
nullptr) {
130 dbn.insert(DevicesByName::value_type(device_name, device));
145 disconnect_device(
TypeHandle device_type,
const std::string &device_name,
147 DevicesByName &dbn = _devices[device_type];
149 DevicesByName::iterator dbni;
150 dbni = dbn.find(device_name);
151 if (dbni != dbn.end()) {
152 if ((*dbni).second == device) {
186 st_callback(
void *arg) {
187 nassertr(arg !=
nullptr,
nullptr);
203 ipc_traits::sleep(0, _sleep_time);
206 #endif // OLD_HAVE_IPC