git-svn-id: http://libopenmetaverse.googlecode.com/svn/trunk@18 52acb1d6-8a22-11de-b505-999d5b087335
92 lines
3.8 KiB
C++
92 lines
3.8 KiB
C++
/*
|
|
* Copyright (c) 2006, Second Life Reverse Engineering Team
|
|
* All rights reserved.
|
|
*
|
|
* - Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions are met:
|
|
*
|
|
* - Redistributions of source code must retain the above copyright notice, this
|
|
* list of conditions and the following disclaimer.
|
|
* - Neither the name of the Second Life Reverse Engineering Team nor the names
|
|
* of its contributors may be used to endorse or promote products derived from
|
|
* this software without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
* POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
|
|
#ifndef _SL_SECONDLIFE_
|
|
#define _SL_SECONDLIFE_
|
|
|
|
#include "includes.h"
|
|
#include "ProtocolManager.h"
|
|
#include "SimConnection.h"
|
|
#include "Network.h"
|
|
#include "Fields.h"
|
|
#include "PacketBuilder.h"
|
|
|
|
// Model for the callbacks:
|
|
// void functionname(std::string command, PacketPtr)
|
|
typedef boost::function2<void, std::string, PacketPtr> callback;
|
|
|
|
class LIBSECONDLIFE_CLASS_DECL SecondLife
|
|
{
|
|
protected:
|
|
ProtocolManager* _protocol;
|
|
Network* _network;
|
|
bool _running;
|
|
// Later on we'll want internal callbacks and client callbacks, so the client doesn't overwrite
|
|
// for example the stream building functions
|
|
std::map<std::string, callback> _callbacks;
|
|
|
|
public:
|
|
SecondLife();
|
|
virtual ~SecondLife();
|
|
|
|
void registerCallback(std::string command, callback handler) { _callbacks[command] = handler; };
|
|
|
|
int loadKeywords(std::string filename)
|
|
{ return _protocol->loadKeywords(filename); };
|
|
int decryptCommFile(std::string source, std::string destination)
|
|
{ return _protocol->decryptCommFile(source, destination); };
|
|
int buildProtocolMap(std::string filename)
|
|
{ return _protocol->buildProtocolMap(filename); };
|
|
|
|
void printMap() { _protocol->printMap(); };
|
|
|
|
void login(std::string firstName, std::string lastName, std::string password, std::string mac,
|
|
size_t major, size_t minor, size_t patch, size_t build,
|
|
std::string platform, std::string viewerDigest, std::string userAgent, std::string author,
|
|
loginCallback handler, std::string url = "https://login.agni.lindenlab.com/cgi-bin/login.cgi")
|
|
{ _network->login(firstName, lastName, password, mac, major, minor, patch, build, platform, viewerDigest,
|
|
userAgent, author, handler, url); };
|
|
void connectSim(boost::asio::ipv4::address ip, unsigned short port, unsigned int code, bool setCurrent = false)
|
|
{ _network->connectSim(ip, port, code, setCurrent); };
|
|
|
|
int sendPacket(PacketPtr packet) { return _network->sendPacket(packet); };
|
|
|
|
SimpleLLUUID agent_id() { return _network->agent_id(); };
|
|
void agent_id(SimpleLLUUID agent_id) { _network->agent_id(agent_id); };
|
|
|
|
SimpleLLUUID session_id() { return _network->session_id(); };
|
|
void session_id(SimpleLLUUID session_id) { _network->session_id(session_id); };
|
|
|
|
SimpleLLUUID secure_session_id() { return _network->secure_session_id(); };
|
|
void secure_session_id(SimpleLLUUID secure_session_id) { _network->secure_session_id(secure_session_id); };
|
|
|
|
ProtocolManager* protocol() { return _protocol; };
|
|
|
|
void tick();
|
|
};
|
|
|
|
#endif //_SL_SECONDLIFE_
|