<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!--

 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.

--><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Apache log4cxx: Member List</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.6 -->
<div class="tabs">
  <ul>
    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
    <li><a href="modules.html"><span>Modules</span></a></li>
    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
    <li id="current"><a href="classes.html"><span>Classes</span></a></li>
    <li><a href="files.html"><span>Files</span></a></li>
  </ul></div>
<div class="tabs">
  <ul>
    <li><a href="classes.html"><span>Alphabetical&nbsp;List</span></a></li>
    <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
    <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
    <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
  </ul></div>
<h1>SocketTimeoutException Member List</h1>This is the complete list of members for <a class="el" href="classlog4cxx_1_1helpers_1_1_socket_timeout_exception.html">SocketTimeoutException</a>, including all inherited members.<p><table>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_exception.html#e5e04df303590dff4f57f2da4e60d6d7">Exception</a>(const char *msg)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_exception.html">Exception</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_exception.html#8dcca19ab4ce108db16e644fc687eeed">Exception</a>(const LogString &amp;msg)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_exception.html">Exception</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_exception.html#8dafee80c8d90301c465737c0c869a74">Exception</a>(const Exception &amp;src)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_exception.html">Exception</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_interrupted_i_o_exception.html#0f802c558c0be6f719187240756bf2c6">InterruptedIOException</a>(const LogString &amp;msg)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_interrupted_i_o_exception.html">InterruptedIOException</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_interrupted_i_o_exception.html#5305dcf7aed763b55b04c2886b2e21d4">InterruptedIOException</a>(const InterruptedIOException &amp;)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_interrupted_i_o_exception.html">InterruptedIOException</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_i_o_exception.html#af2d79761cb149ecc425c18743911a85">IOException</a>()</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_i_o_exception.html">IOException</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_i_o_exception.html#50e391afc3ba3e304f381f3003344b6d">IOException</a>(log4cxx_status_t stat)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_i_o_exception.html">IOException</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_i_o_exception.html#66ed6afc1f66ea29949f58713a7bd214">IOException</a>(const LogString &amp;msg)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_i_o_exception.html">IOException</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_i_o_exception.html#e6ceb38f01c523cfa433c6705ff266e9">IOException</a>(const IOException &amp;src)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_i_o_exception.html">IOException</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_socket_timeout_exception.html#627401566ea07a708cb69d199720884d">operator=</a>(const SocketTimeoutException &amp;)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_socket_timeout_exception.html">SocketTimeoutException</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_interrupted_i_o_exception.html#a408b663067146907af792a5354f38ac">log4cxx::helpers::InterruptedIOException::operator=</a>(const InterruptedIOException &amp;)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_interrupted_i_o_exception.html">InterruptedIOException</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_i_o_exception.html#8f2d14cb76606091a996909f09d092a7">log4cxx::helpers::IOException::operator=</a>(const IOException &amp;)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_i_o_exception.html">IOException</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_exception.html#4c17b6fd950ef49bbf6adb7add4fe450">log4cxx::helpers::Exception::operator=</a>(const Exception &amp;src)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_exception.html">Exception</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_socket_timeout_exception.html#8dfdcca3842ae9f5eea43f18fc2be795">SocketTimeoutException</a>()</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_socket_timeout_exception.html">SocketTimeoutException</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_socket_timeout_exception.html#85ef9b3bbb19af0aa9d61ef122699c40">SocketTimeoutException</a>(const SocketTimeoutException &amp;)</td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_socket_timeout_exception.html">SocketTimeoutException</a></td><td></td></tr>
  <tr class="memlist"><td><a class="el" href="classlog4cxx_1_1helpers_1_1_exception.html#586eee248fedb7de1b50219e14b99c7b">what</a>() const </td><td><a class="el" href="classlog4cxx_1_1helpers_1_1_exception.html">Exception</a></td><td></td></tr>
</table><!--
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.
-->
    </BODY>
</HTML>
