/***************************************************************************** $Id$ File: eventmachine_cpp.h Date: 27Jul07 Copyright (C) 2006-07 by Francis Cianfrocca. All Rights Reserved. Gmail: blackhedd This program is free software; you can redistribute it and/or modify it under the terms of either: 1) the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version; or 2) Ruby's License. See the file COPYING for complete licensing information. *****************************************************************************/ #ifndef __EVMA_EventmachineCpp__H_ #define __EVMA_EventmachineCpp__H_ // This material is only for directly integrating EM into C++ programs. namespace EM { void Callback (const char *sig, int event, const char *data, int length); void Run (void(*)(void)); void AddTimer (int, void(*)()); void StopReactor(); /*************** class Eventable ***************/ class Eventable { public: Eventable() {} virtual ~Eventable() {} std::string Signature; // Called by the framework virtual void ReceiveData (const char *data, int length) {} virtual void ConnectionCompleted() {} virtual void Accept (const char*) {} virtual void Unbind() {} virtual void PostInit() {} void StopReactor() {EM::StopReactor();} }; /**************** class Connection ****************/ class Connection: public Eventable { public: Connection() {} virtual ~Connection() {} virtual void Connect (const char*, int); void SendData (const char *data); void SendData (const char *data, int length); void Close (bool afterWriting); }; /************** class Acceptor **************/ class Acceptor: public Eventable { public: Acceptor() {PostInit();} virtual ~Acceptor() {} void Start (const char*, int); void Accept (const char*); virtual Connection *MakeConnection() {return new Connection();} }; }; #endif // __EVMA_EventmachineCpp__H_