Code Search for Developers
 
 
  

ModuleImpl.h from Oscill8 at Krugle


Show ModuleImpl.h syntax highlighted

/**
 * @file ModuleImpl.h
 * @brief  the implementation of a module's services
 * @author SBW Development Group <sysbio-team@caltech.edu>
 *
 * Organization: Caltech ERATO Kitano Systems Biology Project
 *
 * Created: @date 18th June 2001
 * $Id: ModuleImpl.h,v 1.4 2005/06/22 01:57:52 fbergmann Exp $
 * $Source: /cvsroot/jdesigner/C++Broker/include/SBW/ModuleImpl.h,v $
 */

/*
** Copyright 2001 California Institute of Technology and
** Japan Science and Technology Corporation.
** 
** This library is free software; you can redistribute it and/or modify it
** under the terms of the GNU Lesser General Public License as published
** by the Free Software Foundation; either version 2.1 of the License, or
** any later version.
** 
** This library 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.  The software and
** documentation provided hereunder is on an "as is" basis, and the
** California Institute of Technology and Japan Science and Technology
** Corporation have no obligations to provide maintenance, support,
** updates, enhancements or modifications.  In no event shall the
** California Institute of Technology or the Japan Science and Technology
** Corporation be liable to any party for direct, indirect, special,
** incidental or consequential damages, including lost profits, arising
** out of the use of this software and its documentation, even if the
** California Institute of Technology and/or Japan Science and Technology
** Corporation have been advised of the possibility of such damage.  See
** the GNU Lesser General Public License for more details.
** 
** You should have received a copy of the GNU Lesser General Public License
** along with this library; if not, write to the Free Software Foundation,
** Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
**
** The original code contained here was initially developed by:
**
**     Andrew Finney, Herbert Sauro, Michael Hucka, Hamid Bolouri
**     The Systems Biology Workbench Development Group
**     ERATO Kitano Systems Biology Project
**     Control and Dynamical Systems, MC 107-81
**     California Institute of Technology
**     Pasadena, CA, 91125, USA
**
**     http://www.cds.caltech.edu/erato
**     mailto:sysbio-team@caltech.edu
**
** Contributor(s):
**
*/

/// MSVC generated include loop block
#if !defined(AFX_MODULEIMPL_H__C0B706AC_09B1_4572_A6A3_5696ACE71683__INCLUDED_)
#define AFX_MODULEIMPL_H__C0B706AC_09B1_4572_A6A3_5696ACE71683__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "portableOS.h"
#include "Receiver.h"

namespace SystemsBiologyWorkbench
{

class Handler ;
class ServiceImpl ;
class ServiceImplementation;

template <class T> class MethodTable;

/// represents the module implementation in this module
class ModuleImpl : private Receiver 
{
public:
	SBW_API ModuleImpl(
		std::string uniqueName, std::string displayName, ModuleManagementType type, std::string help = "");

	SBW_API virtual ~ModuleImpl();
	
	SBW_API static std::string calculateCommandLine(std::string argZero);
	SBW_API static char *calculateCommandLineRaw(const char *argZero);

#ifdef WIN32
	/**
	 * WIN32 specific - extracts the command line that this application was launched with.
	 * @param argc referenced integer set to the number of command line arguments plus 1 - size of argc
	 * @param argv referenced pointer set to array of command line arguments including the command itself.
	 */
	static void windowsExtractCommandLine(int *argc, char ***argv)
	{ SBWOS::windowsExtractCommandLine(argc, argv); }
#endif

	SBW_API void setCommandLine(std::string);

	SBW_API void addService(
		std::string serviceName, std::string serviceDisplayName, std::string category, std::string help = "");

	/**
	 * adds a service implementation on this module given information specific to the whole service.
	 * @param serviceName unique identification string for this service (unique amongst other services on the module).
	 * @param serviceDisplayName humanly readable name for the service.
	 * @param category specific category (classification) that this service resides in.
	 * @param service object implementing the service
	 * @param help help string for this service.
	 */
	template<class T> void addServiceObject(
		std::string serviceName, std::string serviceDisplayName, std::string category, T *service, std::string help = "")
	{
		MethodTable<T> table(*this, service, serviceName);

		addService(serviceName, serviceDisplayName, category, help);
		service->registerMethods(table);
	}


	SBW_API void enableModuleServices();
	SBW_API void registerModule();

	SBW_API void setHandler(
		std::string serviceName, Handler *handler, std::string signature,
		bool synchronized = false, std::string help = "");

	SBW_API Handler *getHandler(std::string serviceName, std::string methodSignature);
	SBW_API void waitForDisconnect();
	SBW_API void run(int argc, char* argv[], bool waitForDisconnect = true);
	SBW_API void runOnHost(char *sHost);

private:
	void run(ModuleModeType mode, bool waitForDisconnect, const char *argZero);
	ServiceImpl *getService(std::string serviceName);
	ServiceImpl *getService(Integer i);
	bool canDelete();

	DataBlockWriter receive(
		Integer fromModuleId, Integer service, Integer method, DataBlockReader args);

	/// the implementations of the services on this module instance
	std::vector<ServiceImpl *> services ;

	/// the module identification string for this module
	char *uniqueName ;

	/// the humanly readable name for this module
	char *displayName ;

	/// mechanism for creating and disconnecting instances for this module
	ModuleManagementType type ;

	/// the command line used to create instances of this module
	char *commandLine ;

	/// the help string for this module
	char *help ;

	/// the host this module should run on ... 
	char *host ;

	/// the mode in which this application is operating in.
	ModuleModeType mode ;
};

} // SystemsBiologyWorkbench

#endif // !defined(AFX_MODULEIMPL_H__C0B706AC_09B1_4572_A6A3_5696ACE71683__INCLUDED_)




See more files for this project here

Oscill8

Oscill8 is a suite of tools for analyzing dynamical systems which concentrates on understanding how the dynamical behavior depends on the parameters using bifurcation theory and reaction network theory.

Project homepage: http://sourceforge.net/projects/oscill8
Programming language(s): C,C#,C++
License: other

  .sconsign
  DataBlockReader.h
  DataBlockReaderClass.h
  DataBlockType.h
  DataBlockWriter.h
  DataBlockWriterClass.h
  DoNothingReceiver.h
  Handler.h
  HandlerForC.h
  ImplDataBlockReader.h
  ImplDataBlockReaderClass.h
  ImplDataBlockWriter.h
  ImplDataBlockWriterClass.h
  ImplModuleDescriptor.h
  Method.h
  MethodImpl.h
  MethodInline.h
  MethodTable.h
  Module.h
  ModuleDescriptor.h
  ModuleImpl.h
  ModuleInline.h
  RPCInCall.h
  RPCOutCall.h
  Receiver.h
  RuntimeProperties.h
  SBW.h
  SBWApplicationException.h
  SBWBrokerStartException.h
  SBWC.h
  SBWCommunicationException.h
  SBWConfig.h
  SBWException.h
  SBWHandle.h
  SBWHighLevel.h
  SBWIncompatibleMethodSignatureException.h
  SBWIncorrectCategorySyntaxException.h
  SBWListener.h
  SBWListenerConsolidator.h
  SBWListenerForC.h
  SBWLowLevel.h
  SBWMethodAmbiguousException.h
  SBWMethodNotFoundException.h
  SBWMethodTypeNotBlockTypeException.h
  SBWModuleDefinitionException.h
  SBWModuleIdSyntaxException.h
  SBWModuleNotFoundException.h
  SBWModuleRPC.h
  SBWModuleStartException.h
  SBWOSSocket.h
  SBWObject.h
  SBWRPC.h
  SBWRPCListener.h
  SBWRawException.h
  SBWServiceNotFoundException.h
  SBWSignatureSyntaxException.h
  SBWTypeMismatchException.h
  SBWUnsupportedObjectTypeException.h
  Service.h
  ServiceDescriptor.h
  ServiceImpl.h
  ServiceInline.h
  SessionKey.h
  Signature.h
  SignatureArray.h
  SignatureBoolean.h
  SignatureElement.h
  SignatureList.h
  SignatureListContents.h
  SignatureScalar.h
  SignatureType.h
  config.h
  portableOS.h
  sbwSignatureByte.h
  sbwSignatureVoid.h
  sbwbasictypes.h
  sbwdefs.h
  sbwenums.h
  sbwplusbasictypes.h
  stdafx.h