1786 {
1790 DWORD last_time_network = 0, last_time_display = 0, last_time_flush = 0,
1791 readout_start, sent, size, last_time_rate = 0;
1793 char *pdata;
1794 unsigned char *pd;
1796
1797 INT opt_max = 0, opt_index = 0, opt_tcp_size = 128, opt_cnt = 0;
1799
1800#ifdef OS_VXWORKS
1802#ifdef PPCxxx
1804#endif
1805#endif
1806
1807
1808
1810
1811 do {
1814
1815
1816 for (idx = 0;; idx++) {
1818 eq_info = &
eq->info;
1819
1820
1822 break;
1823
1825 continue;
1826
1828 continue;
1829
1830
1836 }
1837 } else
1839 }
1840
1842 continue;
1844 continue;
1846 continue;
1847
1848
1850 if (eq_info->
period == 0)
1851 continue;
1852
1853
1855
1859
1860
1862
1865 goto net_error;
1866 }
1867
1868
1869 if (old_flag)
1871 }
1872 }
1873
1874
1877 pevent = NULL;
1878
1880
1883 else
1885
1886
1892
1893
1894
1895
1896 *(
INT *) (pevent + 1) = source;
1897
1898 if (
eq->info.num_subevents) {
1899 eq->subevent_number = 0;
1900 do {
1901 *(
INT *) ((
char *) (pevent + 1) + pevent->
data_size) = source;
1902
1903
1904 size =
eq->readout((
char *) (pevent + 1), pevent->
data_size);
1906 if (size > 0) {
1909 "Event size %ld larger than maximum size %d",
1912 }
1913
1914 eq->subevent_number++;
1915 eq->serial_number++;
1916 }
1917
1918
1919 do {
1921
1922 if (source ==
FALSE) {
1924
1925
1927 break;
1928 }
1929 }
while (source ==
FALSE);
1930
1931 }
while (
eq->subevent_number <
eq->info.num_subevents && source);
1932
1933
1934 pevent->
data_size =
eq->readout((
char *) (pevent + 1), -1);
1935 } else {
1936
1937 pevent->
data_size =
eq->readout((
char *) (pevent + 1), 0);
1938
1939
1943 "Event size %ld larger than maximum size %d for frag. ev.",
1947 }
1948 } else {
1951 "Event size %ld larger than maximum size %d",
1955 }
1956 }
1957
1958
1960 eq->serial_number++;
1961 }
1962
1963
1965
1966
1968
1970
1971
1974
1975
1976 pd = (unsigned char *) (pfragment + 1);
1978 for (
i = 0;
i < 4;
i++) {
1979 pd[
i] = (
unsigned char) (size & 0xFF);
1980 size >>= 8;
1981 }
1982
1984
1985 pdata = (char *) (pevent + 1);
1986
1987 for (
i = 0, sent = 0; sent < pevent->
data_size;
i++) {
1990
1991
1994
1995
1999
2000 memcpy(pfragment + 1, pdata, size);
2002 sent += size;
2003 pdata += size;
2004 }
2005
2006
2013 }
2014
2015
2017 }
2018 }
2019
2020 } else {
2021
2022
2023
2024
2028
2032
2035 goto net_error;
2036 }
2037 }
2038
2040
2041 if (
eq->info.num_subevents)
2042 eq->events_sent +=
eq->subevent_number;
2043 else
2045
2047 }
2048
2050
2051
2057 }
2058 }
2059
2060
2062 break;
2063
2064
2066 break;
2067 }
2068 }
2069
2070
2073
2074 do {
2076 if ((int) size == -1)
2077 goto net_error;
2078
2080
2081
2083 break;
2084
2085
2087 break;
2088
2089 } while (size > 0);
2090
2091
2098 }
2099 }
2100 }
2101
2102
2104
2108
2109
2111 size = sizeof(flag);
2113
2114 if (flag) {
2116 size = sizeof(delay);
2119 }
2120
2121
2122 force_update =
TRUE;
2123 }
2124 }
2125
2126
2128
2129
2134 break;
2135 }
2136 }
2137
2138
2140
2141
2146
2147
2152 break;
2153 }
2154
2156
2159 goto net_error;
2160 }
2161
2162
2163 if (old_flag)
2165 }
2166
2167 int overflow = 0;
2168
2172 }
2173
2174
2177 force_update =
FALSE;
2178
2181 eq->stats.events_sent +=
eq->events_sent;
2183 eq->events_sent = 0;
2184 }
2185
2186
2192 eq->stats.events_per_sec = ((int)(
e * 100 + 0.5)) / 100.0;
2193
2195 eq->stats.kbytes_per_sec = ((int)(
e * 1000 + 0.5)) / 1000.0;
2196
2199
2202 }
2203
2205
2207 }
2208
2209
2212 ss_printf(0, opt_index,
"%6d : %5.1lf %5.1lf", opt_tcp_size,
2214 if (++opt_cnt == 10) {
2215 opt_cnt = 0;
2216 opt_max = 0;
2217 opt_index++;
2218 opt_tcp_size = 1 << (opt_index + 7);
2220 if (1 << (opt_index + 7) > 0x8000) {
2221 opt_index = 0;
2222 opt_tcp_size = 1 << 7;
2224 }
2225 }
2226 }
2227
2228
2230
2233
2234
2235 ch = 0;
2239 if (ch == -1)
2240 ch = getchar();
2241
2242 if (ch == '!')
2244 }
2245
2246 if (ch > 0)
2249 break;
2250 }
2251
2254 }
2255
2257 }
2258
2259
2262
2263
2264
2265
2270
2273
2275 for (
j = 0;
j <
i;
j++)
2278 break;
2279 }
2280
2281
2282
2283 if (!buffer_done) {
2287 } else {
2289 }
2291 cm_msg(
MERROR,
"scheduler",
"bm_flush_cache(BM_NO_WAIT) returned status %d", err);
2292 return err;
2293 }
2294 }
2295 }
2296 }
2297
2298 if (old_flag)
2300 }
2301 }
2302
2303
2305
2306 size =
sizeof(
state);
2309 cm_msg(
MERROR,
"scheduler",
"cannot get Runinfo/State in database");
2310
2318
2320 cm_msg(
MERROR,
"main",
"aborting on attempt to use invalid run number %d",
2322 abort();
2323 }
2324
2329 }
2330 }
2331
2332
2334
2335
2338 else {
2339
2343 } else
2345 }
2346 } else
2347
2348
2350
2351
2354
2355
2358
2360
2361net_error:
2362
2364}
INT bm_flush_cache(int buffer_handle, int timeout_msec)
INT cm_yield(INT millisec)
INT cm_transition(INT transition, INT run_number, char *errstr, INT errstr_size, INT async_flag, INT debug_flag)
INT cm_check_deferred_transition()
INT db_send_changed_records()
INT rpc_call(DWORD routine_id,...)
INT rpc_set_opt_tcp_size(INT tcp_size)
#define RPC_BM_FLUSH_CACHE
static int send_event(INT idx, BOOL manual_trig)
void mfe_error_check(void)
BOOL lockout_readout_thread
INT frontend_loop()
Frontend loop.
#define TRANSITION_ERROR_STRING_LENGTH