sources/main.cpp

branch
protocol5
changeset 195
be953e1621d9
parent 192
94c67ae846fc
equal deleted inserted replaced
176:060a13878ca0 195:be953e1621d9
1 /* 1 /*
2 Copyright 2014 - 2016 Teemu Piippo 2 Copyright 2014 - 2021 Teemu Piippo
3 All rights reserved. 3 All rights reserved.
4 4
5 Redistribution and use in source and binary forms, with or without 5 Redistribution and use in source and binary forms, with or without
6 modification, are permitted provided that the following conditions 6 modification, are permitted provided that the following conditions
7 are met: 7 are met:
70 zfc::Interface iface; 70 zfc::Interface iface;
71 71
72 if (argc == 3) 72 if (argc == 3)
73 iface.connect (argv[1], argv[2]); 73 iface.connect (argv[1], argv[2]);
74 74
75 try 75 for (;;)
76 { 76 {
77 for (;;) 77 fd_set fdset;
78 timeval timeout;
79 timeout.tv_sec = 0;
80 timeout.tv_usec = 250000; // 0.25 seconds
81 FD_ZERO(&fdset);
82 FD_SET(0, &fdset);
83 const int fd = iface.getSession()->getSocket()->file_descriptor;
84 FD_SET(fd, &fdset);
85 ::select(fd + 1, &fdset, nullptr, nullptr, &timeout);
86 bool shouldquit = false;
87 if (FD_ISSET(0, &fdset))
78 { 88 {
79 fd_set fdset; 89 // stdin is ready, what's incoming?
80 int highest = 0; 90 iface.handleInput(&shouldquit);
81 timeval timeout; 91 }
82 timeout.tv_sec = 0; 92 if (shouldquit)
83 timeout.tv_usec = 250000; // 0.25 seconds 93 {
84 FD_ZERO (&fdset); 94 break;
85 FD_SET (0, &fdset); 95 }
86 96 else
87 int fd = iface.getSession()->getSocket()->file_descriptor(); 97 {
88 highest = zfc::max (highest, fd);
89 FD_SET (fd, &fdset);
90
91 select (highest + 1, &fdset, nullptr, nullptr, &timeout);
92
93 if (FD_ISSET (0, &fdset))
94 {
95 // stdin is ready, what's incoming?
96 iface.handleInput();
97 }
98
99 iface.getSession()->tick(); 98 iface.getSession()->tick();
100 iface.render(); 99 iface.render();
101 } 100 }
102 } 101 }
103 catch (const zfc::Exitception&) {}
104 102
105 iface.getSession()->disconnect(); 103 iface.getSession()->disconnect();
106 return EXIT_SUCCESS; 104 return EXIT_SUCCESS;
107 } 105 }

mercurial