lltransactionflags.cpp
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:5k
源码类别:

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file lltransactionflags.cpp
  3.  * @brief Some exported symbols and functions for dealing with
  4.  * transaction flags.
  5.  *
  6.  * $LicenseInfo:firstyear=2003&license=viewergpl$
  7.  * 
  8.  * Copyright (c) 2003-2010, Linden Research, Inc.
  9.  * 
  10.  * Second Life Viewer Source Code
  11.  * The source code in this file ("Source Code") is provided by Linden Lab
  12.  * to you under the terms of the GNU General Public License, version 2.0
  13.  * ("GPL"), unless you have obtained a separate licensing agreement
  14.  * ("Other License"), formally executed by you and Linden Lab.  Terms of
  15.  * the GPL can be found in doc/GPL-license.txt in this distribution, or
  16.  * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
  17.  * 
  18.  * There are special exceptions to the terms and conditions of the GPL as
  19.  * it is applied to this Source Code. View the full text of the exception
  20.  * in the file doc/FLOSS-exception.txt in this software distribution, or
  21.  * online at
  22.  * http://secondlifegrid.net/programs/open_source/licensing/flossexception
  23.  * 
  24.  * By copying, modifying or distributing this software, you acknowledge
  25.  * that you have read and understood your obligations described above,
  26.  * and agree to abide by those obligations.
  27.  * 
  28.  * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
  29.  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
  30.  * COMPLETENESS OR PERFORMANCE.
  31.  * $/LicenseInfo$
  32.  */
  33. #include "linden_common.h"
  34. #include "lluuid.h"
  35. #include "lltransactionflags.h"
  36. #include "lltransactiontypes.h"
  37.  
  38. const U8 TRANSACTION_FLAGS_NONE = 0;
  39. const U8 TRANSACTION_FLAG_SOURCE_GROUP = 1;
  40. const U8 TRANSACTION_FLAG_DEST_GROUP = 2;
  41. const U8 TRANSACTION_FLAG_OWNER_GROUP = 4;
  42. const U8 TRANSACTION_FLAG_SIMULTANEOUS_CONTRIBUTION = 8;
  43. const U8 TRANSACTION_FLAG_SIMULTANEOUS_CONTRIBUTION_REMOVAL = 16;
  44. U8 pack_transaction_flags(BOOL is_source_group, BOOL is_dest_group)
  45. {
  46. U8 rv = 0;
  47. if(is_source_group) rv |= TRANSACTION_FLAG_SOURCE_GROUP;
  48. if(is_dest_group) rv |= TRANSACTION_FLAG_DEST_GROUP;
  49. return rv;
  50. }
  51. BOOL is_tf_source_group(TransactionFlags flags)
  52. {
  53. return ((flags & TRANSACTION_FLAG_SOURCE_GROUP) == TRANSACTION_FLAG_SOURCE_GROUP);
  54. }
  55. BOOL is_tf_dest_group(TransactionFlags flags)
  56. {
  57. return ((flags & TRANSACTION_FLAG_DEST_GROUP) == TRANSACTION_FLAG_DEST_GROUP);
  58. }
  59. BOOL is_tf_owner_group(TransactionFlags flags)
  60. {
  61. return ((flags & TRANSACTION_FLAG_OWNER_GROUP) == TRANSACTION_FLAG_OWNER_GROUP);
  62. }
  63. void append_reason(
  64. std::ostream& ostr,
  65. S32 transaction_type,
  66. const std::string& description)
  67. {
  68. switch( transaction_type )
  69. {
  70. case TRANS_OBJECT_SALE:
  71.   ostr << " for " << (description.length() > 0 ? description : std::string("<unknown>"));
  72. break;
  73. case TRANS_LAND_SALE:
  74. ostr << " for a parcel of land";
  75. break;
  76. case TRANS_LAND_PASS_SALE:
  77. ostr << " for a land access pass";
  78. break;
  79. case TRANS_GROUP_LAND_DEED:
  80. ostr << " for deeding land";
  81. default:
  82. break;
  83. }
  84. }
  85. std::string build_transfer_message_to_source(
  86. S32 amount,
  87. const LLUUID& source_id,
  88. const LLUUID& dest_id,
  89. const std::string& dest_name,
  90. S32 transaction_type,
  91. const std::string& description)
  92. {
  93. lldebugs << "build_transfer_message_to_source: " << amount << " "
  94. << source_id << " " << dest_id << " " << dest_name << " "
  95. << transaction_type << " "
  96. << (description.empty() ? "(no desc)" : description)
  97. << llendl;
  98. if(source_id.isNull())
  99. {
  100. return description;
  101. }
  102. if((0 == amount) && description.empty())
  103. {
  104. return description;
  105. }
  106. std::ostringstream ostr;
  107. if(dest_id.isNull())
  108. {
  109. ostr << "You paid L$" << amount;
  110. switch(transaction_type)
  111. {
  112. case TRANS_GROUP_CREATE:
  113. ostr << " to create a group";
  114. break;
  115. case TRANS_GROUP_JOIN:
  116. ostr << " to join a group";
  117. break;
  118. case TRANS_UPLOAD_CHARGE:
  119. ostr << " to upload";
  120. break;
  121. default:
  122. break;
  123. }
  124. }
  125. else
  126. {
  127. ostr << "You paid " << dest_name << " L$" << amount;
  128. append_reason(ostr, transaction_type, description);
  129. }
  130. ostr << ".";
  131. return ostr.str();
  132. }
  133. std::string build_transfer_message_to_destination(
  134. S32 amount,
  135. const LLUUID& dest_id,
  136. const LLUUID& source_id,
  137. const std::string& source_name,
  138. S32 transaction_type,
  139. const std::string& description)
  140. {
  141. lldebugs << "build_transfer_message_to_dest: " << amount << " "
  142. << dest_id << " " << source_id << " " << source_name << " "
  143. << transaction_type << " " << (description.empty() ? "(no desc)" : description)
  144. << llendl;
  145. if(0 == amount)
  146. {
  147. return std::string();
  148. }
  149. if(dest_id.isNull())
  150. {
  151. return description;
  152. }
  153. std::ostringstream ostr;
  154. ostr << source_name << " paid you L$" << amount;
  155. append_reason(ostr, transaction_type, description);
  156. ostr << ".";
  157. return ostr.str();
  158. }