00001 /* 00002 * Scale Stack 00003 * 00004 * Copyright 2010 Eric Day 00005 * 00006 * Licensed under the Apache License, Version 2.0 (the "License"); 00007 * you may not use this file except in compliance with the License. 00008 * You may obtain a copy of the License at 00009 * 00010 * http://www.apache.org/licenses/LICENSE-2.0 00011 * 00012 * Unless required by applicable law or agreed to in writing, software 00013 * distributed under the License is distributed on an "AS IS" BASIS, 00014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00015 * See the License for the specific language governing permissions and 00016 * limitations under the License. 00017 */ 00018 00024 #include "config.h" 00025 00026 #include <scalestack/database_proxy/connection.h> 00027 #include <scalestack/database_proxy/service.h> 00028 00029 namespace scalestack 00030 { 00031 namespace database_proxy 00032 { 00033 00034 /* 00035 * Public functions. 00036 */ 00037 00038 service::service(kernel::module& module): 00039 network::stream_service(module), 00040 _connection_service(module, *this), 00041 _listener_service(module, _connection_service), 00042 _client_service(module) 00043 { 00044 _listener_service.add_listeners(); 00045 } 00046 00047 service::~service() 00048 { 00049 } 00050 00051 network::stream* service::add_stream(void) 00052 { 00053 return new connection(*this); 00054 } 00055 00056 void service::remove_stream(network::stream* stream) 00057 { 00058 delete stream; 00059 } 00060 00061 client* service::get_client(connection* connection, bool need_handshake) 00062 { 00063 return _client_service.get_client(connection, need_handshake); 00064 } 00065 00066 void service::yield_client(client* client) 00067 { 00068 _client_service.yield_client(client); 00069 } 00070 00071 void service::remove_from_queue(connection* connection) 00072 { 00073 _client_service.remove_from_queue(connection); 00074 } 00075 00076 } /* namespace database_proxy */ 00077 } /* namespace scalestack */
1.6.3