summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/sys/posix/EventChannelThreads.h
diff options
context:
space:
mode:
authorAndrew Stitcher <astitcher@apache.org>2007-07-27 17:19:30 +0000
committerAndrew Stitcher <astitcher@apache.org>2007-07-27 17:19:30 +0000
commit65ea2f177bd0810590895d89a490af8cea60253b (patch)
tree1a1432d706ac5f43dc8cdd5fdb0d7b5566dd5d06 /cpp/src/qpid/sys/posix/EventChannelThreads.h
parent0a7f3f5dde40e59e90588e4ab7ba2ba99651c0f4 (diff)
downloadqpid-python-65ea2f177bd0810590895d89a490af8cea60253b.tar.gz
* Asynchronous network IO subsystem
- This is now implemented such that it very nearly only depends on the platform code (Socker & Poller), this is not 100% true at present, but should be simple to finish. - This is still not the default (use "./configure --disable-apr-netio" to get it) - Interrupting the broker gives a known error - Default for number of broker io threads is not correct (needs to be number of CPUs - it will run slower with too many io threads) * EventChannel code - Deleted all EventChannel code as it's entirely superceded by this new shiny code ;-) * Rearranged the platform Socket implementations a bit for better abstraction git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@560323 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/sys/posix/EventChannelThreads.h')
-rw-r--r--cpp/src/qpid/sys/posix/EventChannelThreads.h105
1 files changed, 0 insertions, 105 deletions
diff --git a/cpp/src/qpid/sys/posix/EventChannelThreads.h b/cpp/src/qpid/sys/posix/EventChannelThreads.h
deleted file mode 100644
index 19112cf4db..0000000000
--- a/cpp/src/qpid/sys/posix/EventChannelThreads.h
+++ /dev/null
@@ -1,105 +0,0 @@
-#ifndef _posix_EventChannelThreads_h
-#define _sys_EventChannelThreads_h
-
-/*
- *
- * Copyright (c) 2006 The Apache Software Foundation
- *
- * Licensed 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.
- *
- */
-#include "EventChannel.h"
-
-#include "qpid/Exception.h"
-#include "qpid/sys/AtomicCount.h"
-#include "qpid/sys/Monitor.h"
-#include "qpid/sys/Thread.h"
-#include "qpid/sys/Time.h"
-#include "qpid/sys/Runnable.h"
-
-#include <vector>
-
-namespace qpid {
-namespace sys {
-
-/**
- Dynamic thread pool serving an EventChannel.
-
- Threads run a loop { e = wait(); e->dispatch(); }
- The size of the thread pool is automatically adjusted to optimal size.
-*/
-class EventChannelThreads :
- public qpid::SharedObject<EventChannelThreads>,
- private sys::Runnable
-{
- public:
- /** Constant to represent an unlimited number of threads */
- static const size_t unlimited;
-
- /**
- * Create the thread pool and start initial threads.
- * @param minThreads Pool will initialy contain minThreads threads and
- * will never shrink to less until shutdown.
- * @param maxThreads Pool will never grow to more than maxThreads.
- */
- static EventChannelThreads::shared_ptr create(
- EventChannel::shared_ptr channel = EventChannel::create(),
- size_t minThreads = 1,
- size_t maxThreads = unlimited
- );
-
- ~EventChannelThreads();
-
- /** Post event to the underlying channel */
- void post(Event& event) { channel->post(event); }
-
- /**
- * Terminate all threads.
- *
- * Returns immediately, use join() to wait till all threads are
- * shut down.
- */
- void shutdown();
-
- /** Wait for all threads to terminate. */
- void join();
-
- private:
- typedef std::vector<sys::Thread> Threads;
- typedef enum {
- RUNNING, TERMINATING, JOINING, SHUTDOWN
- } State;
-
- EventChannelThreads(
- EventChannel::shared_ptr channel, size_t min, size_t max);
-
- void addThread();
-
- void run();
- bool keepRunning();
- void adjustThreads();
-
- Monitor monitor;
- size_t minThreads;
- size_t maxThreads;
- EventChannel::shared_ptr channel;
- Threads workers;
- sys::AtomicCount nWaiting;
- State state;
-};
-
-
-}}
-
-
-#endif /*!_sys_EventChannelThreads_h*/