Roadmap for Creating Plugins **************************** .. Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. This chapter has provided an overview of Traffic Server's HTTP processing, API hooks, and the asynchronous event model. Next, you must understand the capabilities of Traffic Server API functions. These are quite broad: - **HTTP header manipulation functions** Obtain information about and manipulate HTTP headers, URLs, & MIME headers. - **HTTP transaction functions** Get information about and modify HTTP transactions (for example: get the client IP associated to the transaction; get the server IP; get parent proxy information) - **IO functions** Manipulate vconnections (virtual connections, used for network and disk I/O) - **Network connection functions** Open connections to remote servers. - **Statistics functions** Define and compute statistics for your plugin's activity. - **Traffic Server management functions** Obtain values for Traffic Server configuration and statistics variables. Below are some guidelines for creating a plugin: 1. Decide what you want your plugin to do, based on the capabilities of the API and Traffic Server. Two main kinds of example plugins provided with this SDK are HTTP-based (includes header-based and response transform plugins), and non-HTTP-based (a protocol plugin). These examples are discussed in the next three chapters. 2. Determine where your plugin needs to hook on to Traffic Server's HTTP processing (view the :ref:`http-txn-state-diagram` 3. Read :doc:`../header-based-plugin-examples.en` to learn the basics of writing plugins: creating continuations and setting up hooks. If you want to write a plugin that transforms data, then read :doc:`../http-transformation-plugin.en` 4. Figure out what parts of the Traffic Server API you need to use and then read about the details of those APIs in this manual's reference chapters. 5. Compile and load your plugin (see :doc:`../getting-started.en` 6. Depending on your plugin's functionality, you might start testing it by issuing requests by hand and checking for the desired behavior in Traffic Server log files. See the ***Traffic Server Administrator's Guide*** for information about Traffic Server logs. 7. You can test the performance of Traffic Server running with your plugin using SDKTest. You can also customize SDKTest to perform functional testing on your plugin; for more information see the ***Traffic Server SDKTest User's Guide***.