📄 settings.hpp
字号:
#define isBuflenSet(settings) ((settings->flags & FLAG_BUFLENSET) != 0)#define isCompat(settings) ((settings->flags & FLAG_COMPAT) != 0)#define isDaemon(settings) ((settings->flags & FLAG_DAEMON) != 0)#define isIPV6(settings) ((settings->flags & FLAG_DOMAIN) != 0)#define isFileInput(settings) ((settings->flags & FLAG_FILEINPUT) != 0)#define isNoDelay(settings) ((settings->flags & FLAG_NODELAY) != 0)#define isPrintMSS(settings) ((settings->flags & FLAG_PRINTMSS) != 0)#define isRemoveService(settings) ((settings->flags & FLAG_REMOVESERVICE) != 0)#define isSTDIN(settings) ((settings->flags & FLAG_STDIN) != 0)#define isSTDOUT(settings) ((settings->flags & FLAG_STDOUT) != 0)#define isSuggestWin(settings) ((settings->flags & FLAG_SUGGESTWIN) != 0)#define isUDP(settings) ((settings->flags & FLAG_UDP) != 0)#define isModeTime(settings) ((settings->flags & FLAG_MODETIME) != 0)#define isReport(settings) ((settings->flags & FLAG_REPORTSETTINGS) != 0)#define isMulticast(settings) ((settings->flags & FLAG_MULTICAST) != 0)// Active Low for Reports#define isSettingsReport(settings) ((settings->flags & FLAG_NOSETTREPORT) == 0)#define isConnectionReport(settings) ((settings->flags & FLAG_NOCONNREPORT) == 0)#define isDataReport(settings) ((settings->flags & FLAG_NODATAREPORT) == 0)#define isServerReport(settings) ((settings->flags & FLAG_NOSERVREPORT) == 0)#define isMultipleReport(settings) ((settings->flags & FLAG_NOMULTREPORT) == 0)// end Active Low#define isSingleClient(settings) ((settings->flags & FLAG_SINGLECLIENT) != 0)#define isSingleUDP(settings) ((settings->flags & FLAG_SINGLEUDP) != 0)#define setBuflenSet(settings) settings->flags |= FLAG_BUFLENSET#define setCompat(settings) settings->flags |= FLAG_COMPAT#define setDaemon(settings) settings->flags |= FLAG_DAEMON#define setIPV6(settings) settings->flags |= FLAG_DOMAIN#define setFileInput(settings) settings->flags |= FLAG_FILEINPUT#define setNoDelay(settings) settings->flags |= FLAG_NODELAY#define setPrintMSS(settings) settings->flags |= FLAG_PRINTMSS#define setRemoveService(settings) settings->flags |= FLAG_REMOVESERVICE#define setSTDIN(settings) settings->flags |= FLAG_STDIN#define setSTDOUT(settings) settings->flags |= FLAG_STDOUT#define setSuggestWin(settings) settings->flags |= FLAG_SUGGESTWIN#define setUDP(settings) settings->flags |= FLAG_UDP#define setModeTime(settings) settings->flags |= FLAG_MODETIME#define setReport(settings) settings->flags |= FLAG_REPORTSETTINGS#define setMulticast(settings) settings->flags |= FLAG_MULTICAST#define setNoSettReport(settings) settings->flags |= FLAG_NOSETTREPORT#define setNoConnReport(settings) settings->flags |= FLAG_NOCONNREPORT#define setNoDataReport(settings) settings->flags |= FLAG_NODATAREPORT#define setNoServReport(settings) settings->flags |= FLAG_NOSERVREPORT#define setNoMultReport(settings) settings->flags |= FLAG_NOMULTREPORT#define setSingleClient(settings) settings->flags |= FLAG_SINGLECLIENT#define setSingleUDP(settings) settings->flags |= FLAG_SINGLEUDP#define unsetBuflenSet(settings) settings->flags &= ~FLAG_BUFLENSET#define unsetCompat(settings) settings->flags &= ~FLAG_COMPAT#define unsetDaemon(settings) settings->flags &= ~FLAG_DAEMON#define unsetIPV6(settings) settings->flags &= ~FLAG_DOMAIN#define unsetFileInput(settings) settings->flags &= ~FLAG_FILEINPUT#define unsetNoDelay(settings) settings->flags &= ~FLAG_NODELAY#define unsetPrintMSS(settings) settings->flags &= ~FLAG_PRINTMSS#define unsetRemoveService(settings) settings->flags &= ~FLAG_REMOVESERVICE#define unsetSTDIN(settings) settings->flags &= ~FLAG_STDIN#define unsetSTDOUT(settings) settings->flags &= ~FLAG_STDOUT#define unsetSuggestWin(settings) settings->flags &= ~FLAG_SUGGESTWIN#define unsetUDP(settings) settings->flags &= ~FLAG_UDP#define unsetModeTime(settings) settings->flags &= ~FLAG_MODETIME#define unsetReport(settings) settings->flags &= ~FLAG_REPORTSETTINGS#define unsetMulticast(settings) settings->flags &= ~FLAG_MULTICAST#define unsetNoSettReport(settings) settings->flags &= ~FLAG_NOSETTREPORT#define unsetNoConnReport(settings) settings->flags &= ~FLAG_NOCONNREPORT#define unsetNoDataReport(settings) settings->flags &= ~FLAG_NODATAREPORT#define unsetNoServReport(settings) settings->flags &= ~FLAG_NOSERVREPORT#define unsetNoMultReport(settings) settings->flags &= ~FLAG_NOMULTREPORT#define unsetSingleClient(settings) settings->flags &= ~FLAG_SINGLECLIENT#define unsetSingleUDP(settings) settings->flags &= ~FLAG_SINGLEUDP#define HEADER_VERSION1 0x80000000#define RUN_NOW 0x00000001// used to reference the 4 byte ID number we place in UDP datagrams// use int32_t if possible, otherwise a 32 bit bitfield (e.g. on J90) typedef struct UDP_datagram {#ifdef HAVE_INT32_T int32_t id; u_int32_t tv_sec; u_int32_t tv_usec;#else signed int id : 32; unsigned int tv_sec : 32; unsigned int tv_usec : 32;#endif} UDP_datagram;/* * The client_hdr structure is sent from clients * to servers to alert them of things that need * to happen. Order must be perserved in all * future releases for backward compatibility. * 1.7 has flags, numThreads, mPort, and bufferlen */typedef struct client_hdr {#ifdef HAVE_INT32_T /* * flags is a bitmap for different options * the most significant bits are for determining * which information is available. So 1.7 uses * 0x80000000 and the next time information is added * the 1.7 bit will be set and 0x40000000 will be * set signifying additional information. If no * information bits are set then the header is ignored. * The lowest order diferentiates between dualtest and * tradeoff modes, wheither the speaker needs to start * immediately or after the audience finishes. */ int32_t flags; int32_t numThreads; int32_t mPort; int32_t bufferlen; int32_t mWinBand; int32_t mAmount;#else signed int flags : 32; signed int numThreads : 32; signed int mPort : 32; signed int bufferlen : 32; signed int mWinBand : 32; signed int mAmount : 32;#endif} client_hdr;/* * The server_hdr structure facilitates the server * report of jitter and loss on the client side. * It piggy_backs on the existing clear to close * packet. */typedef struct server_hdr {#ifdef HAVE_INT32_T /* * flags is a bitmap for different options * the most significant bits are for determining * which information is available. So 1.7 uses * 0x80000000 and the next time information is added * the 1.7 bit will be set and 0x40000000 will be * set signifying additional information. If no * information bits are set then the header is ignored. */ int32_t flags; int32_t total_len1; int32_t total_len2; int32_t stop_sec; int32_t stop_usec; int32_t error_cnt; int32_t outorder_cnt; int32_t datagrams; int32_t jitter1; int32_t jitter2;#else signed int flags : 32; signed int total_len1 : 32; signed int total_len2 : 32; signed int stop_sec : 32; signed int stop_usec : 32; signed int error_cnt : 32; signed int outorder_cnt : 32; signed int datagrams : 32; signed int jitter1 : 32; signed int jitter2 : 32;#endif} server_hdr; // set to defaults void Settings_Initialize( thread_Settings* main ); // copy structure void Settings_Copy( thread_Settings* from, thread_Settings** into ); // free associated memory void Settings_Destroy( thread_Settings *mSettings ); // parse settings from user's environment variables void Settings_ParseEnvironment( thread_Settings *mSettings ); // parse settings from app's command line void Settings_ParseCommandLine( int argc, char **argv, thread_Settings *mSettings ); // convert to lower case for [KMG]bits/sec void Settings_GetLowerCaseArg(const char *,char *); // convert to upper case for [KMG]bytes/sec void Settings_GetUpperCaseArg(const char *,char *); // generate settings for listener instance void Settings_GenerateListenerSettings( thread_Settings *client, thread_Settings **listener); // generate settings for speaker instance void Settings_GenerateClientSettings( thread_Settings *server, thread_Settings **client, client_hdr *hdr ); // generate client header for server void Settings_GenerateClientHdr( thread_Settings *client, client_hdr *hdr );#ifdef __cplusplus} /* end extern "C" */#endif#endif // SETTINGS_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -