Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

netclient.h

Go to the documentation of this file.
00001 /* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*-
00002 
00003    this file is part of rcssserver3D
00004    Fri May 9 2003
00005    Copyright (C) 2002,2003 Koblenz University
00006    Copyright (C) 2003 RoboCup Soccer Server 3D Maintenance Group
00007    $Id: netclient.h,v 1.2 2004/12/31 11:25:05 rollmark Exp $
00008 
00009    This program is free software; you can redistribute it and/or modify
00010    it under the terms of the GNU General Public License as published by
00011    the Free Software Foundation; version 2 of the License.
00012 
00013    This program is distributed in the hope that it will be useful,
00014    but WITHOUT ANY WARRANTY; without even the implied warranty of
00015    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016    GNU General Public License for more details.
00017 
00018    You should have received a copy of the GNU General Public License
00019    along with this program; if not, write to the Free Software
00020    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00021 */
00022 #ifndef SPARK_NETCLIENT_H
00023 #define SPARK_NETCLIENT_H
00024 
00025 #include <zeitgeist/class.h>
00026 #include <oxygen/simulationserver/simcontrolnode.h>
00027 #include <oxygen/simulationserver/netcontrol.h>
00028 #include <oxygen/simulationserver/netmessage.h>
00029 #include <oxygen/simulationserver/netbuffer.h>
00030 #include <rcssnet/tcpsocket.hpp>
00031 #include <rcssnet/socketstreambuf.hpp>
00032 
00033 namespace oxygen
00034 {
00035 
00036 class NetClient : public oxygen::SimControlNode
00037 {
00038 public:
00039     NetClient();
00040     virtual ~NetClient();
00041 
00043     void SetServer(const std::string& host);
00044 
00046     const std::string& GetServer() const;
00047 
00049     void SetPort(int port);
00050 
00052     int GetPort() const;
00053 
00055     void SetClientType(oxygen::NetControl::ESocketType type);
00056 
00058     oxygen::NetControl::ESocketType GetClientType();
00059 
00062     void SendMessage(const std::string& msg);
00063 
00064 protected:
00066     bool Connect();
00067 
00071     void ReadFragments();
00072 
00074     void CloseConnection();
00075 
00077     void ParseMessage(const std::string& msg);
00078 
00079 protected:
00081     std::string mHost;
00082 
00084     int mPort;
00085 
00087     oxygen::NetControl::ESocketType mType;
00088 
00090     boost::shared_ptr<rcss::net::Socket> mSocket;
00091 
00093     boost::shared_ptr<oxygen::NetBuffer> mNetBuffer;
00094 
00096     boost::shared_ptr<oxygen::NetMessage> mNetMessage;
00097 
00099     int mBufferSize;
00100 
00102     boost::shared_array<char> mBuffer;
00103 };
00104 
00105 DECLARE_CLASS(NetClient);
00106 
00107 } // namespace oxygen
00108 
00109 #endif // NETCLIENT_H

Generated on Thu Apr 6 15:25:39 2006 for rcssserver3d by  doxygen 1.4.4