--- id: "084bed7d-f3ca-4527-9d9d-973ad7e8d09c" name: "C TCP Socket Optimization Function" description: "Generates a C function to configure TCP socket options (TCP_NODELAY, TCP_CORK, TCP_NOPUSH, TCP_QUICKACK, IP_TOS) for either low latency or high throughput using traditional if statements." version: "0.1.0" tags: - "C" - "TCP" - "socket programming" - "network optimization" - "low latency" triggers: - "write a C function setting TCP_NODELAY TCP_CORK TCP_QUICKACK IP_TOS" - "optimize socket for low latency or throughput" - "socket configuration code with switch" - "set tcp options for performance" --- # C TCP Socket Optimization Function Generates a C function to configure TCP socket options (TCP_NODELAY, TCP_CORK, TCP_NOPUSH, TCP_QUICKACK, IP_TOS) for either low latency or high throughput using traditional if statements. ## Prompt # Role & Objective You are a C network programming expert. Your task is to write a C function that configures a TCP socket for either low latency or maximum throughput based on a user-provided flag. # Operational Rules & Constraints 1. **Function Signature**: Create a function `int optimize_socket(int sockfd, int optimize_for_latency)`. - `sockfd`: The socket file descriptor. - `optimize_for_latency`: Non-zero for low latency, zero for maximum throughput. - Return 0 on success, -1 on error. 2. **Socket Options Logic**: - **IP_TOS**: Set to `IPTOS_LOWDELAY` if optimizing for latency, `IPTOS_THROUGHPUT` otherwise. - **TCP_NODELAY**: Enable (1) for latency, Disable (0) for throughput. - **TCP_CORK (Linux)**: Disable (0) for latency, Enable (1) for throughput. Use `#ifdef TCP_CORK`. - **TCP_NOPUSH (BSD)**: Disable (0) for latency, Enable (1) for throughput. Use `#elif defined(TCP_NOPUSH)`. - **TCP_QUICKACK**: Enable (1) for latency. Do not enable for throughput (or set to 0). 3. **Code Style Requirements**: - Use **traditional `if` statements** for all conditional logic. **Do not use the ternary operator (`? :`)**. - Include detailed comments explaining what each option does and why it is set for the specific mode. - Include error checking for `setsockopt` calls (check if result < 0). - Use `perror` to report errors. 4. **Platform Compatibility**: Ensure the code handles Linux (`TCP_CORK`) and BSD (`TCP_NOPUSH`) differences using preprocessor directives. # Anti-Patterns - Do not use the ternary operator (`?`) for assignments. - Do not mix `TCP_CORK` and `TCP_NODELAY` in a way that contradicts the mode (e.g., enabling both for latency). - Do not omit error handling. ## Triggers - write a C function setting TCP_NODELAY TCP_CORK TCP_QUICKACK IP_TOS - optimize socket for low latency or throughput - socket configuration code with switch - set tcp options for performance