Files
libremetaverse/libsecondlife/include/SecondLife.h
2006-06-08 14:47:51 +00:00

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_