/* This file is part of the db4o object database http://www.db4o.com Copyright (C) 2004 - 2011 Versant Corporation http://www.versant.com db4o is free software; you can redistribute it and/or modify it under the terms of version 3 of the GNU General Public License as published by the Free Software Foundation. db4o is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/. */ package com.db4o.cs.internal.config; import java.util.*; import com.db4o.cs.config.*; import com.db4o.cs.foundation.*; import com.db4o.internal.*; import com.db4o.messaging.*; public class NetworkingConfigurationImpl implements NetworkingConfiguration { protected final Config4Impl _config; NetworkingConfigurationImpl(Config4Impl config) { _config = config; } public Config4Impl config() { return _config; } public void batchMessages(boolean flag) { _config.batchMessages(flag); } public void maxBatchQueueSize(int maxSize) { _config.maxBatchQueueSize(maxSize); } public void singleThreadedClient(boolean flag) { _config.singleThreadedClient(flag); } public void messageRecipient(MessageRecipient messageRecipient) { _config.setMessageRecipient(messageRecipient); } public void clientServerFactory(ClientServerFactory factory) { _config.environmentContributions().add(factory); } public ClientServerFactory clientServerFactory() { final ClientServerFactory configuredFactory = my(ClientServerFactory.class); if (null == configuredFactory) { return new StandardClientServerFactory(); } return configuredFactory; } public Socket4Factory socketFactory() { final Socket4Factory configuredFactory = my(Socket4Factory.class); if (null == configuredFactory) { return new StandardSocket4Factory(); } return configuredFactory; } public void socketFactory(Socket4Factory factory) { _config.environmentContributions().add(factory); } private <T> T my(Class<T> type) { List environmentContributions = _config.environmentContributions(); for (int i = environmentContributions.size() - 1; i >= 0 ; i--) { Object o = environmentContributions.get(i); if (type.isInstance(o)) { return type.cast(o); } } return null; } }