00001 /* 00002 00003 Copyright (C) 2006-2007 by Peter Dimov. 00004 00005 This file is part of Calitko (http://www.calitko.org). 00006 00007 Calitko is free software; you can redistribute it and/or modify 00008 it under the terms of the GNU General Public License as published by 00009 the Free Software Foundation; either version 2 of the License, or 00010 (at your option) any later version. 00011 00012 Calitko is distributed in the hope that it will be useful, 00013 but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00015 GNU General Public License for more details. 00016 00017 You should have received a copy of the GNU General Public License 00018 along with Calitko; if not, write to the Free Software 00019 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 00020 00021 */ 00022 00023 #ifndef PROTOCOLS__GENERICS__GENERIC_SESSION_H 00024 #define PROTOCOLS__GENERICS__GENERIC_SESSION_H 00025 00026 #include "Imports.h" 00027 #include "Data.h" 00028 #include "DataSerializer.h" 00029 #include "DataQueue.h" 00030 #include "Session.h" 00031 #include "SessionStatus.h" 00032 #include "Transport.h" 00033 #include "TransportStatus.h" 00034 00035 namespace Protocols { 00036 namespace Generics { 00037 00039 00099 class GenericSession : public Session, public TransportStatus 00100 { 00101 CALITKO_TESTABLE 00102 REFERENCE_OBJECT (GenericSession) 00103 00104 public: 00105 GenericSession (Transport *, 00106 DataSerializer *, 00107 DataQueue *, 00108 SessionStatus *); 00109 ~GenericSession(); 00110 00111 // Session interface part: 00112 void open(); 00113 void send (const Data &); 00114 void close(); 00115 void abort(); 00116 00117 // TransportStatus interface part: 00118 void transportConnected (Transport *); 00119 void transportReadyRead (Transport *); 00120 void transportReadyWrite (Transport *); 00121 void transportDisconnected (Transport *); 00122 00123 private: 00124 00125 enum State 00126 { 00127 Closed, 00128 Opened, 00129 Closing 00130 }; 00131 00132 Transport *transport; 00133 DataSerializer *dataSerializer; 00134 DataQueue *dataQueue; 00135 SessionStatus *status; 00136 State state; 00137 }; 00138 00139 } // Generics; 00140 } // Protocols; 00141 00142 #endif // PROTOCOLS__GENERICS__GENERIC_SESSION_H