/* * 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. */ using System; using System.Collections.Generic; using libsecondlife.Packets; namespace libsecondlife { /// /// Class for controlling various system settings. /// public class Settings { /// The version of libsecondlife (not the SL protocol itself) public string VERSION = "libsecondlife 0.0.9"; /// XML-RPC login server to connect to public string LOGIN_SERVER = "https://login.agni.lindenlab.com/cgi-bin/login.cgi"; /// Millisecond interval between ticks, where all ACKs are /// sent out and the age of unACKed packets is checked public readonly int NETWORK_TICK_LENGTH = 500; /// The maximum value of a packet sequence number. After that /// we assume the sequence number just rolls over? Or maybe the /// protocol isn't able to sustain a connection past that public readonly int MAX_SEQUENCE = 0xFFFFFF; /// Number of milliseconds before a teleport attempt will time /// out public readonly int TELEPORT_TIMEOUT = 18 * 1000; /// Number of milliseconds before NetworkManager.Logout() will time out public int LOGOUT_TIMEOUT = 5 * 1000; /// Number of milliseconds for xml-rpc to timeout public int LOGIN_TIMEOUT = 30 * 1000; /// The maximum size of the sequence number inbox, used to /// check for resent and/or duplicate packets public int INBOX_SIZE = 100; /// Milliseconds before a packet is assumed lost and resent public int RESEND_TIMEOUT = 4000; /// Milliseconds without receiving a packet before the /// connection to a simulator is assumed lost public int SIMULATOR_TIMEOUT = 15 * 1000; /// Maximum number of queued ACKs to be sent before SendAcks() /// is forced public int MAX_PENDING_ACKS = 10; /// Maximum number of ACKs to append to a packet public int MAX_APPENDED_ACKS = 10; /// Cost of uploading an asset public int UPLOAD_COST { get { return priceUpload; } } /// Enable/disable debugging log messages public bool DEBUG = true; private SecondLife Client; private int priceUpload = 0; /// /// Constructor /// /// Client connection Object to use public Settings(SecondLife client) { Client = client; Client.Network.RegisterCallback(Packets.PacketType.EconomyData, new NetworkManager.PacketCallback(EconomyDataHandler)); } /// /// Presumably for outputting asset upload costs. /// /// /// private void EconomyDataHandler(Packet packet, Simulator simulator) { EconomyDataPacket econ = (EconomyDataPacket)packet; priceUpload = econ.Info.PriceUpload; } } }