diff options
Diffstat (limited to 'linden/indra/llcommon')
-rw-r--r-- | linden/indra/llcommon/indra_constants.h | 1 | ||||
-rw-r--r-- | linden/indra/llcommon/linden_common.h | 1 | ||||
-rw-r--r-- | linden/indra/llcommon/llcommon.vcproj | 8 | ||||
-rw-r--r-- | linden/indra/llcommon/llevent.cpp | 1 | ||||
-rw-r--r-- | linden/indra/llcommon/llextendedstatus.h | 69 | ||||
-rw-r--r-- | linden/indra/llcommon/lllivefile.cpp | 7 | ||||
-rw-r--r-- | linden/indra/llcommon/lllslconstants.h | 11 | ||||
-rw-r--r-- | linden/indra/llcommon/llmetrics.cpp | 2 | ||||
-rw-r--r-- | linden/indra/llcommon/llsys.cpp | 81 | ||||
-rw-r--r-- | linden/indra/llcommon/llsys.h | 26 | ||||
-rw-r--r-- | linden/indra/llcommon/llthread.h | 2 | ||||
-rw-r--r-- | linden/indra/llcommon/lltimer.cpp | 16 | ||||
-rw-r--r-- | linden/indra/llcommon/lltimer.h | 5 | ||||
-rw-r--r-- | linden/indra/llcommon/lluri.cpp | 111 | ||||
-rw-r--r-- | linden/indra/llcommon/llversionserver.h (renamed from linden/indra/llcommon/llversion.h) | 11 | ||||
-rw-r--r-- | linden/indra/llcommon/llversionviewer.h | 39 |
16 files changed, 244 insertions, 147 deletions
diff --git a/linden/indra/llcommon/indra_constants.h b/linden/indra/llcommon/indra_constants.h index 21635b5..bd591c5 100644 --- a/linden/indra/llcommon/indra_constants.h +++ b/linden/indra/llcommon/indra_constants.h | |||
@@ -136,6 +136,7 @@ const MASK MASK_ALT = 0x0002; | |||
136 | const MASK MASK_SHIFT = 0x0004; | 136 | const MASK MASK_SHIFT = 0x0004; |
137 | const MASK MASK_NORMALKEYS = 0x0007; // A real mask - only get the bits for normal modifier keys | 137 | const MASK MASK_NORMALKEYS = 0x0007; // A real mask - only get the bits for normal modifier keys |
138 | const MASK MASK_MAC_CONTROL = 0x0008; // Un-mapped Ctrl key on Macs, not used on Windows | 138 | const MASK MASK_MAC_CONTROL = 0x0008; // Un-mapped Ctrl key on Macs, not used on Windows |
139 | const MASK MASK_MODIFIERS = MASK_CONTROL|MASK_ALT|MASK_SHIFT|MASK_MAC_CONTROL; | ||
139 | 140 | ||
140 | // Special keys go into >128 | 141 | // Special keys go into >128 |
141 | const KEY KEY_SPECIAL = 0x80; // special keys start here | 142 | const KEY KEY_SPECIAL = 0x80; // special keys start here |
diff --git a/linden/indra/llcommon/linden_common.h b/linden/indra/llcommon/linden_common.h index 5a6018a..24a346c 100644 --- a/linden/indra/llcommon/linden_common.h +++ b/linden/indra/llcommon/linden_common.h | |||
@@ -50,6 +50,7 @@ | |||
50 | #include "stdtypes.h" | 50 | #include "stdtypes.h" |
51 | #include "lldefs.h" | 51 | #include "lldefs.h" |
52 | #include "llerror.h" | 52 | #include "llerror.h" |
53 | #include "llextendedstatus.h" | ||
53 | #include "llformat.h" | 54 | #include "llformat.h" |
54 | #include "llstring.h" | 55 | #include "llstring.h" |
55 | #include "lltimer.h" | 56 | #include "lltimer.h" |
diff --git a/linden/indra/llcommon/llcommon.vcproj b/linden/indra/llcommon/llcommon.vcproj index 5557f94..70006e0 100644 --- a/linden/indra/llcommon/llcommon.vcproj +++ b/linden/indra/llcommon/llcommon.vcproj | |||
@@ -385,6 +385,9 @@ | |||
385 | RelativePath=".\llevent.h"> | 385 | RelativePath=".\llevent.h"> |
386 | </File> | 386 | </File> |
387 | <File | 387 | <File |
388 | RelativePath=".\llextendedstatus.h"> | ||
389 | </File> | ||
390 | <File | ||
388 | RelativePath=".\llfasttimer.h"> | 391 | RelativePath=".\llfasttimer.h"> |
389 | </File> | 392 | </File> |
390 | <File | 393 | <File |
@@ -523,7 +526,10 @@ | |||
523 | RelativePath=".\lluuidhashmap.h"> | 526 | RelativePath=".\lluuidhashmap.h"> |
524 | </File> | 527 | </File> |
525 | <File | 528 | <File |
526 | RelativePath=".\llversion.h"> | 529 | RelativePath=".\llversionserver.h"> |
530 | </File> | ||
531 | <File | ||
532 | RelativePath=".\llversionviewer.h"> | ||
527 | </File> | 533 | </File> |
528 | <File | 534 | <File |
529 | RelativePath=".\llworkerthread.h"> | 535 | RelativePath=".\llworkerthread.h"> |
diff --git a/linden/indra/llcommon/llevent.cpp b/linden/indra/llcommon/llevent.cpp index a6c4ef0..9c736c8 100644 --- a/linden/indra/llcommon/llevent.cpp +++ b/linden/indra/llcommon/llevent.cpp | |||
@@ -238,6 +238,7 @@ LLEventDispatcher::~LLEventDispatcher() | |||
238 | if (impl) | 238 | if (impl) |
239 | { | 239 | { |
240 | delete impl; | 240 | delete impl; |
241 | impl = NULL; | ||
241 | } | 242 | } |
242 | } | 243 | } |
243 | 244 | ||
diff --git a/linden/indra/llcommon/llextendedstatus.h b/linden/indra/llcommon/llextendedstatus.h new file mode 100644 index 0000000..a1c998f --- /dev/null +++ b/linden/indra/llcommon/llextendedstatus.h | |||
@@ -0,0 +1,69 @@ | |||
1 | /** | ||
2 | * @file llextendedstatus.h | ||
3 | * @date August 2007 | ||
4 | * @brief extended status codes for curl/vfs/resident asset storage and delivery | ||
5 | * | ||
6 | * Copyright (c) 2007-2007, Linden Research, Inc. | ||
7 | * | ||
8 | * Second Life Viewer Source Code | ||
9 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
10 | * to you under the terms of the GNU General Public License, version 2.0 | ||
11 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
12 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
13 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
14 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
15 | * | ||
16 | * There are special exceptions to the terms and conditions of the GPL as | ||
17 | * it is applied to this Source Code. View the full text of the exception | ||
18 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
19 | * online at http://secondlife.com/developers/opensource/flossexception | ||
20 | * | ||
21 | * By copying, modifying or distributing this software, you acknowledge | ||
22 | * that you have read and understood your obligations described above, | ||
23 | * and agree to abide by those obligations. | ||
24 | * | ||
25 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
26 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
27 | * COMPLETENESS OR PERFORMANCE. | ||
28 | */ | ||
29 | |||
30 | #ifndef LL_LLEXTENDEDSTATUS_H | ||
31 | #define LL_LLEXTENDEDSTATUS_H | ||
32 | |||
33 | |||
34 | typedef S32 LLExtStat; | ||
35 | |||
36 | |||
37 | // Status provider groups - Top bits indicate which status type it is | ||
38 | // Zero is common status code (next section) | ||
39 | const LLExtStat LL_EXSTAT_CURL_RESULT = 1L<<30; // serviced by curl - use 1L if we really implement the below | ||
40 | const LLExtStat LL_EXSTAT_RES_RESULT = 2L<<30; // serviced by resident copy | ||
41 | const LLExtStat LL_EXSTAT_VFS_RESULT = 3L<<30; // serviced by vfs | ||
42 | |||
43 | |||
44 | // Common Status Codes | ||
45 | // | ||
46 | const LLExtStat LL_EXSTAT_NONE = 0x00000; // No extra info here - sorry! | ||
47 | const LLExtStat LL_EXSTAT_NULL_UUID = 0x10001; // null asset ID | ||
48 | const LLExtStat LL_EXSTAT_NO_UPSTREAM = 0x10002; // attempt to upload without a valid upstream method/provider | ||
49 | const LLExtStat LL_EXSTAT_REQUEST_DROPPED = 0x10003; // request was dropped unserviced | ||
50 | const LLExtStat LL_EXSTAT_NONEXISTENT_FILE = 0x10004; // trying to upload a file that doesn't exist | ||
51 | const LLExtStat LL_EXSTAT_BLOCKED_FILE = 0x10005; // trying to upload a file that we can't open | ||
52 | |||
53 | |||
54 | // curl status codes: | ||
55 | // | ||
56 | // Mask off LL_EXSTAT_CURL_RESULT for original result and | ||
57 | // see: libraries/include/curl/curl.h | ||
58 | |||
59 | |||
60 | // Memory-Resident status codes: | ||
61 | // None at present | ||
62 | |||
63 | |||
64 | // VFS status codes: | ||
65 | const LLExtStat LL_EXSTAT_VFS_CACHED = LL_EXSTAT_VFS_RESULT | 0x0001; | ||
66 | const LLExtStat LL_EXSTAT_VFS_CORRUPT = LL_EXSTAT_VFS_RESULT | 0x0002; | ||
67 | |||
68 | |||
69 | #endif // LL_LLEXTENDEDSTATUS_H | ||
diff --git a/linden/indra/llcommon/lllivefile.cpp b/linden/indra/llcommon/lllivefile.cpp index f116a2a..17fe210 100644 --- a/linden/indra/llcommon/lllivefile.cpp +++ b/linden/indra/llcommon/lllivefile.cpp | |||
@@ -146,8 +146,11 @@ namespace | |||
146 | : LLEventTimer(refresh), mLiveFile(f) | 146 | : LLEventTimer(refresh), mLiveFile(f) |
147 | { } | 147 | { } |
148 | 148 | ||
149 | void tick() | 149 | BOOL tick() |
150 | { mLiveFile.checkAndReload(); } | 150 | { |
151 | mLiveFile.checkAndReload(); | ||
152 | return FALSE; | ||
153 | } | ||
151 | 154 | ||
152 | private: | 155 | private: |
153 | LLLiveFile& mLiveFile; | 156 | LLLiveFile& mLiveFile; |
diff --git a/linden/indra/llcommon/lllslconstants.h b/linden/indra/llcommon/lllslconstants.h index afe4a9e..151c7a2 100644 --- a/linden/indra/llcommon/lllslconstants.h +++ b/linden/indra/llcommon/lllslconstants.h | |||
@@ -166,4 +166,15 @@ const S32 STRING_TRIM_HEAD = 0x01; | |||
166 | const S32 STRING_TRIM_TAIL = 0x02; | 166 | const S32 STRING_TRIM_TAIL = 0x02; |
167 | const S32 STRING_TRIM = STRING_TRIM_HEAD | STRING_TRIM_TAIL; | 167 | const S32 STRING_TRIM = STRING_TRIM_HEAD | STRING_TRIM_TAIL; |
168 | 168 | ||
169 | // llGetObjectDetails | ||
170 | const S32 OBJECT_UNKOWN_DETAIL = -1; | ||
171 | const S32 OBJECT_NAME = 1; | ||
172 | const S32 OBJECT_DESC = 2; | ||
173 | const S32 OBJECT_POS = 3; | ||
174 | const S32 OBJECT_ROT = 4; | ||
175 | const S32 OBJECT_VELOCITY = 5; | ||
176 | const S32 OBJECT_OWNER = 6; | ||
177 | const S32 OBJECT_GROUP = 7; | ||
178 | const S32 OBJECT_CREATOR = 8; | ||
179 | |||
169 | #endif | 180 | #endif |
diff --git a/linden/indra/llcommon/llmetrics.cpp b/linden/indra/llcommon/llmetrics.cpp index 583f840..74bd13d 100644 --- a/linden/indra/llcommon/llmetrics.cpp +++ b/linden/indra/llcommon/llmetrics.cpp | |||
@@ -67,7 +67,7 @@ void LLMetricsImpl::recordEventDetails(const std::string& location, | |||
67 | metrics["location"] = location; | 67 | metrics["location"] = location; |
68 | metrics["stats"] = stats; | 68 | metrics["stats"] = stats; |
69 | 69 | ||
70 | llinfos << "LLMETRICS: " << LLSDOStreamer<LLSDNotationFormatter>(metrics) << llendl; | 70 | llinfos << "LLMETRICS: " << LLSDNotationStreamer(metrics) << llendl; |
71 | } | 71 | } |
72 | 72 | ||
73 | // Store this: | 73 | // Store this: |
diff --git a/linden/indra/llcommon/llsys.cpp b/linden/indra/llcommon/llsys.cpp index 25749e1..95b6b55 100644 --- a/linden/indra/llcommon/llsys.cpp +++ b/linden/indra/llcommon/llsys.cpp | |||
@@ -46,6 +46,7 @@ | |||
46 | #elif LL_DARWIN | 46 | #elif LL_DARWIN |
47 | # include <sys/sysctl.h> | 47 | # include <sys/sysctl.h> |
48 | # include <sys/utsname.h> | 48 | # include <sys/utsname.h> |
49 | # include <stdint.h> | ||
49 | #elif LL_LINUX | 50 | #elif LL_LINUX |
50 | # include <sys/utsname.h> | 51 | # include <sys/utsname.h> |
51 | # include <unistd.h> | 52 | # include <unistd.h> |
@@ -482,57 +483,97 @@ LLMemoryInfo::LLMemoryInfo() | |||
482 | { | 483 | { |
483 | } | 484 | } |
484 | 485 | ||
485 | U32 LLMemoryInfo::getPhysicalMemory() const | 486 | #if LL_WINDOWS |
487 | static U32 LLMemoryAdjustKBResult(U32 inKB) | ||
488 | { | ||
489 | // Moved this here from llfloaterabout.cpp | ||
490 | |||
491 | //! \bug | ||
492 | // For some reason, the reported amount of memory is always wrong. | ||
493 | // The original adjustment assumes it's always off by one meg, however | ||
494 | // errors of as much as 2520 KB have been observed in the value | ||
495 | // returned from the GetMemoryStatusEx function. Here we keep the | ||
496 | // original adjustment from llfoaterabout.cpp until this can be | ||
497 | // fixed somehow. | ||
498 | inKB += 1024; | ||
499 | |||
500 | return inKB; | ||
501 | } | ||
502 | #endif | ||
503 | |||
504 | U32 LLMemoryInfo::getPhysicalMemoryKB() const | ||
486 | { | 505 | { |
487 | #if LL_WINDOWS | 506 | #if LL_WINDOWS |
488 | MEMORYSTATUS state; | 507 | MEMORYSTATUSEX state; |
489 | state.dwLength = sizeof(state); | 508 | state.dwLength = sizeof(state); |
490 | GlobalMemoryStatus(&state); | 509 | GlobalMemoryStatusEx(&state); |
491 | 510 | ||
492 | return (U32)state.dwTotalPhys; | 511 | return LLMemoryAdjustKBResult((U32)(state.ullTotalPhys >> 10)); |
493 | 512 | ||
494 | #elif LL_DARWIN | 513 | #elif LL_DARWIN |
495 | // This might work on Linux as well. Someone check... | 514 | // This might work on Linux as well. Someone check... |
496 | unsigned int phys = 0; | 515 | uint64_t phys = 0; |
497 | int mib[2] = { CTL_HW, HW_PHYSMEM }; | 516 | int mib[2] = { CTL_HW, HW_MEMSIZE }; |
498 | 517 | ||
499 | size_t len = sizeof(phys); | 518 | size_t len = sizeof(phys); |
500 | sysctl(mib, 2, &phys, &len, NULL, 0); | 519 | sysctl(mib, 2, &phys, &len, NULL, 0); |
501 | 520 | ||
502 | return phys; | 521 | return (U32)(phys >> 10); |
522 | |||
503 | #elif LL_LINUX | 523 | #elif LL_LINUX |
524 | U64 phys = 0; | ||
525 | phys = (U64)(getpagesize()) * (U64)(get_phys_pages()); | ||
526 | return (U32)(phys >> 10); | ||
504 | 527 | ||
505 | return getpagesize() * get_phys_pages(); | ||
506 | #elif LL_SOLARIS | 528 | #elif LL_SOLARIS |
507 | return getpagesize() * sysconf(_SC_PHYS_PAGES); | 529 | U64 phys = 0; |
530 | phys = (U64)(getpagesize()) * (U64)(sysconf(_SC_PHYS_PAGES)); | ||
531 | return (U32)(phys >> 10); | ||
532 | |||
508 | #else | 533 | #else |
509 | return 0; | 534 | return 0; |
510 | 535 | ||
511 | #endif | 536 | #endif |
512 | } | 537 | } |
513 | 538 | ||
539 | U32 LLMemoryInfo::getPhysicalMemoryClamped() const | ||
540 | { | ||
541 | // Return the total physical memory in bytes, but clamp it | ||
542 | // to no more than U32_MAX | ||
543 | |||
544 | U32 phys_kb = getPhysicalMemoryKB(); | ||
545 | if (phys_kb >= 4194304 /* 4GB in KB */) | ||
546 | { | ||
547 | return U32_MAX; | ||
548 | } | ||
549 | else | ||
550 | { | ||
551 | return phys_kb << 10; | ||
552 | } | ||
553 | } | ||
554 | |||
514 | void LLMemoryInfo::stream(std::ostream& s) const | 555 | void LLMemoryInfo::stream(std::ostream& s) const |
515 | { | 556 | { |
516 | #if LL_WINDOWS | 557 | #if LL_WINDOWS |
517 | MEMORYSTATUS state; | 558 | MEMORYSTATUSEX state; |
518 | state.dwLength = sizeof(state); | 559 | state.dwLength = sizeof(state); |
519 | GlobalMemoryStatus(&state); | 560 | GlobalMemoryStatusEx(&state); |
520 | 561 | ||
521 | s << "Percent Memory use: " << (U32)state.dwMemoryLoad << '%' << std::endl; | 562 | s << "Percent Memory use: " << (U32)state.dwMemoryLoad << '%' << std::endl; |
522 | s << "Total Physical Kb: " << (U32)state.dwTotalPhys/1024 << std::endl; | 563 | s << "Total Physical KB: " << (U32)(state.ullTotalPhys/1024) << std::endl; |
523 | s << "Avail Physical Kb: " << (U32)state.dwAvailPhys/1024 << std::endl; | 564 | s << "Avail Physical KB: " << (U32)(state.ullAvailPhys/1024) << std::endl; |
524 | s << "Total page Kb: " << (U32)state.dwTotalPageFile/1024 << std::endl; | 565 | s << "Total page KB: " << (U32)(state.ullTotalPageFile/1024) << std::endl; |
525 | s << "Avail page Kb: " << (U32)state.dwAvailPageFile/1024 << std::endl; | 566 | s << "Avail page KB: " << (U32)(state.ullAvailPageFile/1024) << std::endl; |
526 | s << "Total Virtual Kb: " << (U32)state.dwTotalVirtual/1024 << std::endl; | 567 | s << "Total Virtual KB: " << (U32)(state.ullTotalVirtual/1024) << std::endl; |
527 | s << "Avail Virtual Kb: " << (U32)state.dwAvailVirtual/1024 << std::endl; | 568 | s << "Avail Virtual KB: " << (U32)(state.ullAvailVirtual/1024) << std::endl; |
528 | #elif LL_DARWIN | 569 | #elif LL_DARWIN |
529 | U64 phys = 0; | 570 | uint64_t phys = 0; |
530 | 571 | ||
531 | size_t len = sizeof(phys); | 572 | size_t len = sizeof(phys); |
532 | 573 | ||
533 | if(sysctlbyname("hw.memsize", &phys, &len, NULL, 0) == 0) | 574 | if(sysctlbyname("hw.memsize", &phys, &len, NULL, 0) == 0) |
534 | { | 575 | { |
535 | s << "Total Physical Kb: " << phys/1024 << std::endl; | 576 | s << "Total Physical KB: " << phys/1024 << std::endl; |
536 | } | 577 | } |
537 | else | 578 | else |
538 | { | 579 | { |
@@ -543,7 +584,7 @@ void LLMemoryInfo::stream(std::ostream& s) const | |||
543 | 584 | ||
544 | phys = (U64)(sysconf(_SC_PHYS_PAGES)) * (U64)(sysconf(_SC_PAGESIZE)/1024); | 585 | phys = (U64)(sysconf(_SC_PHYS_PAGES)) * (U64)(sysconf(_SC_PAGESIZE)/1024); |
545 | 586 | ||
546 | s << "Total Physical Kb: " << phys << std::endl; | 587 | s << "Total Physical KB: " << phys << std::endl; |
547 | #else | 588 | #else |
548 | // *NOTE: This works on linux. What will it do on other systems? | 589 | // *NOTE: This works on linux. What will it do on other systems? |
549 | FILE* meminfo = LLFile::fopen(MEMINFO_FILE,"rb"); | 590 | FILE* meminfo = LLFile::fopen(MEMINFO_FILE,"rb"); |
diff --git a/linden/indra/llcommon/llsys.h b/linden/indra/llcommon/llsys.h index 416bd54..66a3465 100644 --- a/linden/indra/llcommon/llsys.h +++ b/linden/indra/llcommon/llsys.h | |||
@@ -89,13 +89,31 @@ private: | |||
89 | std::string mCPUString; | 89 | std::string mCPUString; |
90 | }; | 90 | }; |
91 | 91 | ||
92 | //============================================================================= | ||
93 | // | ||
94 | // CLASS LLMemoryInfo | ||
95 | |||
92 | class LLMemoryInfo | 96 | class LLMemoryInfo |
97 | |||
98 | /*! @brief Class to query the memory subsystem | ||
99 | |||
100 | @details | ||
101 | Here's how you use an LLMemoryInfo: | ||
102 | |||
103 | LLMemoryInfo info; | ||
104 | <br> llinfos << info << llendl; | ||
105 | */ | ||
93 | { | 106 | { |
94 | public: | 107 | public: |
95 | LLMemoryInfo(); | 108 | LLMemoryInfo(); ///< Default constructor |
96 | void stream(std::ostream& s) const; | 109 | void stream(std::ostream& s) const; ///< output text info to s |
97 | 110 | ||
98 | U32 getPhysicalMemory() const; | 111 | U32 getPhysicalMemoryKB() const; ///< Memory size in KiloBytes |
112 | |||
113 | /*! Memory size in bytes, if total memory is >= 4GB then U32_MAX will | ||
114 | ** be returned. | ||
115 | */ | ||
116 | U32 getPhysicalMemoryClamped() const; ///< Memory size in clamped bytes | ||
99 | }; | 117 | }; |
100 | 118 | ||
101 | 119 | ||
diff --git a/linden/indra/llcommon/llthread.h b/linden/indra/llcommon/llthread.h index c863322..d700592 100644 --- a/linden/indra/llcommon/llthread.h +++ b/linden/indra/llcommon/llthread.h | |||
@@ -220,7 +220,7 @@ public: | |||
220 | if (0 == res) | 220 | if (0 == res) |
221 | { | 221 | { |
222 | delete this; | 222 | delete this; |
223 | res = 0; | 223 | return 0; |
224 | } | 224 | } |
225 | return res; | 225 | return res; |
226 | } | 226 | } |
diff --git a/linden/indra/llcommon/lltimer.cpp b/linden/indra/llcommon/lltimer.cpp index 6077063..177f1de 100644 --- a/linden/indra/llcommon/lltimer.cpp +++ b/linden/indra/llcommon/lltimer.cpp | |||
@@ -525,13 +525,27 @@ LLEventTimer::~LLEventTimer() | |||
525 | 525 | ||
526 | void LLEventTimer::updateClass() | 526 | void LLEventTimer::updateClass() |
527 | { | 527 | { |
528 | std::list<LLEventTimer*> completed_timers; | ||
528 | for (std::list<LLEventTimer*>::iterator iter = sActiveList.begin(); iter != sActiveList.end(); ) | 529 | for (std::list<LLEventTimer*>::iterator iter = sActiveList.begin(); iter != sActiveList.end(); ) |
529 | { | 530 | { |
530 | LLEventTimer* timer = *iter++; | 531 | LLEventTimer* timer = *iter++; |
531 | F32 et = timer->mEventTimer.getElapsedTimeF32(); | 532 | F32 et = timer->mEventTimer.getElapsedTimeF32(); |
532 | if (et > timer->mPeriod) { | 533 | if (et > timer->mPeriod) { |
533 | timer->mEventTimer.reset(); | 534 | timer->mEventTimer.reset(); |
534 | timer->tick(); | 535 | if ( timer->tick() ) |
536 | { | ||
537 | completed_timers.push_back( timer ); | ||
538 | } | ||
539 | } | ||
540 | } | ||
541 | |||
542 | if ( completed_timers.size() > 0 ) | ||
543 | { | ||
544 | for (std::list<LLEventTimer*>::iterator completed_iter = completed_timers.begin(); | ||
545 | completed_iter != completed_timers.end(); | ||
546 | completed_iter++ ) | ||
547 | { | ||
548 | delete *completed_iter; | ||
535 | } | 549 | } |
536 | } | 550 | } |
537 | } | 551 | } |
diff --git a/linden/indra/llcommon/lltimer.h b/linden/indra/llcommon/lltimer.h index 37917d0..35f0a7b 100644 --- a/linden/indra/llcommon/lltimer.h +++ b/linden/indra/llcommon/lltimer.h | |||
@@ -142,11 +142,12 @@ void secondsToTimecodeString(F32 current_time, char *tcstring); | |||
142 | class LLEventTimer | 142 | class LLEventTimer |
143 | { | 143 | { |
144 | public: | 144 | public: |
145 | LLEventTimer(F32 period); // period is the amount of time between each call to tick() | 145 | LLEventTimer(F32 period); // period is the amount of time between each call to tick() in seconds |
146 | virtual ~LLEventTimer(); | 146 | virtual ~LLEventTimer(); |
147 | 147 | ||
148 | //function to be called at the supplied frequency | 148 | //function to be called at the supplied frequency |
149 | virtual void tick() = 0; | 149 | // Normally return FALSE; TRUE will delete the timer after the function returns. |
150 | virtual BOOL tick() = 0; | ||
150 | 151 | ||
151 | static void updateClass(); | 152 | static void updateClass(); |
152 | 153 | ||
diff --git a/linden/indra/llcommon/lluri.cpp b/linden/indra/llcommon/lluri.cpp index 43d2147..892ac02 100644 --- a/linden/indra/llcommon/lluri.cpp +++ b/linden/indra/llcommon/lluri.cpp | |||
@@ -319,117 +319,6 @@ LLURI LLURI::buildHTTP(const std::string& host, | |||
319 | return LLURI::buildHTTP(llformat("%s:%u", host.c_str(), port), path, query); | 319 | return LLURI::buildHTTP(llformat("%s:%u", host.c_str(), port), path, query); |
320 | } | 320 | } |
321 | 321 | ||
322 | namespace { | ||
323 | LLURI buildBackboneURL(LLApp* app, | ||
324 | const std::string& p1 = "", | ||
325 | const std::string& p2 = "", | ||
326 | const std::string& p3 = "") | ||
327 | { | ||
328 | std::string host = "localhost:12040"; | ||
329 | |||
330 | if (app) | ||
331 | { | ||
332 | host = app->getOption("backbone-host-port").asString(); | ||
333 | } | ||
334 | |||
335 | LLSD path = LLSD::emptyArray(); | ||
336 | if (!p1.empty()) path.append(p1); | ||
337 | if (!p2.empty()) path.append(p2); | ||
338 | if (!p3.empty()) path.append(p3); | ||
339 | |||
340 | return LLURI::buildHTTP(host, path); | ||
341 | } | ||
342 | } | ||
343 | |||
344 | #if LL_ENABLE_JANKY_DEPRECATED_WEB_SERVICE_CALLS | ||
345 | // static | ||
346 | LLURI LLURI::buildBulkAgentNamesURI(LLApp* app) | ||
347 | { | ||
348 | std::string host = "localhost:12040"; | ||
349 | |||
350 | if (app) | ||
351 | { | ||
352 | host = app->getOption("backbone-host-port").asString(); | ||
353 | } | ||
354 | |||
355 | LLSD path = LLSD::emptyArray(); | ||
356 | path.append("agent"); | ||
357 | path.append("names"); | ||
358 | |||
359 | return buildHTTP(host, path); | ||
360 | } | ||
361 | |||
362 | // static | ||
363 | LLURI LLURI::buildBulkAgentNamesURI(LLApp* app) | ||
364 | { | ||
365 | std::string host = "localhost:12040"; | ||
366 | |||
367 | if (app) | ||
368 | { | ||
369 | host = app->getOption("backbone-host-port").asString(); | ||
370 | } | ||
371 | |||
372 | LLSD path = LLSD::emptyArray(); | ||
373 | path.append("agent"); | ||
374 | path.append("names"); | ||
375 | |||
376 | return buildHTTP(host, path); | ||
377 | } | ||
378 | |||
379 | // static | ||
380 | LLURI LLURI::buildAgentSessionURI(const LLUUID& agent_id, LLApp* app) | ||
381 | { | ||
382 | return buildBackboneURL(app, "agent", agent_id.asString(), "session"); | ||
383 | } | ||
384 | |||
385 | // static | ||
386 | LLURI LLURI::buildAgentNameURI(const LLUUID& agent_id, LLApp* app) | ||
387 | { | ||
388 | std::string host = "localhost:12040"; | ||
389 | |||
390 | if (app) | ||
391 | { | ||
392 | host = app->getOption("backbone-host-port").asString(); | ||
393 | } | ||
394 | |||
395 | LLSD path = LLSD::emptyArray(); | ||
396 | path.append("agent"); | ||
397 | path.append(agent_id); | ||
398 | path.append("name"); | ||
399 | |||
400 | return buildHTTP(host, path); | ||
401 | } | ||
402 | |||
403 | // static | ||
404 | LLURI LLURI::buildAgentNameURI(const LLUUID& agent_id, LLApp* app) | ||
405 | { | ||
406 | std::string host = "localhost:12040"; | ||
407 | |||
408 | if (app) | ||
409 | { | ||
410 | host = app->getOption("backbone-host-port").asString(); | ||
411 | } | ||
412 | |||
413 | LLSD path = LLSD::emptyArray(); | ||
414 | path.append("agent"); | ||
415 | path.append(agent_id); | ||
416 | path.append("name"); | ||
417 | |||
418 | return buildHTTP(host, path); | ||
419 | } | ||
420 | |||
421 | // static | ||
422 | LLURI LLURI::buildAgentLoginInfoURI(const LLUUID& agent_id, const std::string& dataserver) | ||
423 | { | ||
424 | LLSD path = LLSD::emptyArray(); | ||
425 | path.append("agent"); | ||
426 | path.append(agent_id); | ||
427 | path.append("logininfo"); | ||
428 | |||
429 | return buildHTTP(dataserver, path); | ||
430 | } | ||
431 | #endif // LL_ENABLE_JANKY_DEPRECATED_WEB_SERVICE_CALLS | ||
432 | |||
433 | std::string LLURI::asString() const | 322 | std::string LLURI::asString() const |
434 | { | 323 | { |
435 | if (mScheme.empty()) | 324 | if (mScheme.empty()) |
diff --git a/linden/indra/llcommon/llversion.h b/linden/indra/llcommon/llversionserver.h index 00c3039..0680501 100644 --- a/linden/indra/llcommon/llversion.h +++ b/linden/indra/llcommon/llversionserver.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /** | 1 | /** |
2 | * @file llversion.h | 2 | * @file llversionserver.h |
3 | * @brief | 3 | * @brief |
4 | * | 4 | * |
5 | * Copyright (c) 2002-2007, Linden Research, Inc. | 5 | * Copyright (c) 2002-2007, Linden Research, Inc. |
@@ -26,12 +26,15 @@ | |||
26 | * COMPLETENESS OR PERFORMANCE. | 26 | * COMPLETENESS OR PERFORMANCE. |
27 | */ | 27 | */ |
28 | 28 | ||
29 | #ifndef LL_LLVERSION_H | 29 | #ifndef LL_LLVERSIONSERVER_H |
30 | #define LL_LLVERSION_H | 30 | #define LL_LLVERSIONSERVER_H |
31 | 31 | ||
32 | const S32 LL_VERSION_MAJOR = 1; | 32 | const S32 LL_VERSION_MAJOR = 1; |
33 | const S32 LL_VERSION_MINOR = 18; | 33 | const S32 LL_VERSION_MINOR = 18; |
34 | const S32 LL_VERSION_PATCH = 2; | 34 | const S32 LL_VERSION_PATCH = 2; |
35 | const S32 LL_VERSION_BUILD = 1; | 35 | const S32 LL_VERSION_BUILD = 0; |
36 | |||
37 | const char * const LL_CHANNEL = "Second Life Server"; | ||
38 | |||
36 | 39 | ||
37 | #endif | 40 | #endif |
diff --git a/linden/indra/llcommon/llversionviewer.h b/linden/indra/llcommon/llversionviewer.h new file mode 100644 index 0000000..8c001e0 --- /dev/null +++ b/linden/indra/llcommon/llversionviewer.h | |||
@@ -0,0 +1,39 @@ | |||
1 | /** | ||
2 | * @file llversionviewer.h | ||
3 | * @brief | ||
4 | * | ||
5 | * Copyright (c) 2002-2007, Linden Research, Inc. | ||
6 | * | ||
7 | * Second Life Viewer Source Code | ||
8 | * The source code in this file ("Source Code") is provided by Linden Lab | ||
9 | * to you under the terms of the GNU General Public License, version 2.0 | ||
10 | * ("GPL"), unless you have obtained a separate licensing agreement | ||
11 | * ("Other License"), formally executed by you and Linden Lab. Terms of | ||
12 | * the GPL can be found in doc/GPL-license.txt in this distribution, or | ||
13 | * online at http://secondlife.com/developers/opensource/gplv2 | ||
14 | * | ||
15 | * There are special exceptions to the terms and conditions of the GPL as | ||
16 | * it is applied to this Source Code. View the full text of the exception | ||
17 | * in the file doc/FLOSS-exception.txt in this software distribution, or | ||
18 | * online at http://secondlife.com/developers/opensource/flossexception | ||
19 | * | ||
20 | * By copying, modifying or distributing this software, you acknowledge | ||
21 | * that you have read and understood your obligations described above, | ||
22 | * and agree to abide by those obligations. | ||
23 | * | ||
24 | * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO | ||
25 | * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, | ||
26 | * COMPLETENESS OR PERFORMANCE. | ||
27 | */ | ||
28 | |||
29 | #ifndef LL_LLVERSIONVIEWER_H | ||
30 | #define LL_LLVERSIONVIEWER_H | ||
31 | |||
32 | const S32 LL_VERSION_MAJOR = 1; | ||
33 | const S32 LL_VERSION_MINOR = 18; | ||
34 | const S32 LL_VERSION_PATCH = 3; | ||
35 | const S32 LL_VERSION_BUILD = 2; | ||
36 | |||
37 | const char * const LL_CHANNEL = "Second Life Release"; | ||
38 | |||
39 | #endif | ||