summaryrefslogtreecommitdiff
path: root/indra/llmessage/llinstantmessage.h
diff options
context:
space:
mode:
authorJames Cook <james@lindenlab.com>2007-01-02 08:33:20 +0000
committerJames Cook <james@lindenlab.com>2007-01-02 08:33:20 +0000
commit420b91db29485df39fd6e724e782c449158811cb (patch)
treeb471a94563af914d3ed3edd3e856d21cb1b69945 /indra/llmessage/llinstantmessage.h
Print done when done.
Diffstat (limited to 'indra/llmessage/llinstantmessage.h')
-rw-r--r--indra/llmessage/llinstantmessage.h308
1 files changed, 308 insertions, 0 deletions
diff --git a/indra/llmessage/llinstantmessage.h b/indra/llmessage/llinstantmessage.h
new file mode 100644
index 0000000000..c8138cf491
--- /dev/null
+++ b/indra/llmessage/llinstantmessage.h
@@ -0,0 +1,308 @@
+/**
+ * @file llinstantmessage.h
+ * @brief Constants and declarations used by instant messages.
+ *
+ * Copyright (c) 2002-$CurrentYear$, Linden Research, Inc.
+ * $License$
+ */
+
+#ifndef LL_LLINSTANTMESSAGE_H
+#define LL_LLINSTANTMESSAGE_H
+
+#include "llhost.h"
+#include "lluuid.h"
+#include "llsd.h"
+#include "llmemory.h"
+#include "v3math.h"
+
+class LLMessageSystem;
+
+// The ImprovedInstantMessage only supports 8 bits in the "Dialog"
+// field, so don't go past the byte boundary
+enum EInstantMessage
+{
+ // default. ID is meaningless, nothing in the binary bucket.
+ IM_NOTHING_SPECIAL = 0,
+
+ // pops a messagebox with a single OK button
+ IM_MESSAGEBOX = 1,
+
+ // pops a countdown messagebox with a single OK button
+ // IM_MESSAGEBOX_COUNTDOWN = 2,
+
+ // You've been invited to join a group.
+ // ID is the group id.
+
+ // The binary bucket contains a null terminated string
+ // representation of the officer/member status and join cost for
+ // the invitee. (bug # 7672) The format is 1 byte for
+ // officer/member (O for officer, M for member), and as many bytes
+ // as necessary for cost.
+ IM_GROUP_INVITATION = 3,
+
+ // Inventory offer.
+ // ID is the transaction id
+ // Binary bucket is a list of inventory uuid and type.
+ IM_INVENTORY_OFFERED = 4,
+ IM_INVENTORY_ACCEPTED = 5,
+ IM_INVENTORY_DECLINED = 6,
+
+ // Group vote
+ // Name is name of person who called vote.
+ // ID is vote ID used for internal tracking
+ IM_GROUP_VOTE = 7,
+
+ // Group message
+ // This means that the message is meant for everyone in the
+ // agent's group. This will result in a database query to find all
+ // participants and start an im session.
+ IM_GROUP_MESSAGE_DEPRECATED = 8,
+
+ // Task inventory offer.
+ // ID is the transaction id
+ // Binary bucket is a (mostly) complete packed inventory item
+ IM_TASK_INVENTORY_OFFERED = 9,
+ IM_TASK_INVENTORY_ACCEPTED = 10,
+ IM_TASK_INVENTORY_DECLINED = 11,
+
+ // Copied as pending, type LL_NOTHING_SPECIAL, for new users
+ // used by offline tools
+ IM_NEW_USER_DEFAULT = 12,
+
+ //
+ // session based messaging - the way that people usually actually
+ // communicate with each other.
+ //
+
+ // Start a session, or add users to a session.
+ IM_SESSION_ADD = 13,
+
+ // Start a session, but don't prune offline users
+ IM_SESSION_OFFLINE_ADD = 14,
+
+ // start a session with your gruop
+ IM_SESSION_GROUP_START = 15,
+
+ // start a session without a calling card (finder or objects)
+ IM_SESSION_CARDLESS_START = 16,
+
+ // send a message to a session.
+ IM_SESSION_SEND = 17,
+
+ // leave a session
+ IM_SESSION_DROP = 18,
+
+ // an instant message from an object - for differentiation on the
+ // viewer, since you can't IM an object yet.
+ IM_FROM_TASK = 19,
+
+ // sent an IM to a busy user, this is the auto response
+ IM_BUSY_AUTO_RESPONSE = 20,
+
+ // Shows the message in the console and chat history
+ IM_CONSOLE_AND_CHAT_HISTORY = 21,
+
+ // IM Types used for luring your friends
+ IM_LURE_USER = 22,
+ IM_LURE_ACCEPTED = 23,
+ IM_LURE_DECLINED = 24,
+ IM_GODLIKE_LURE_USER = 25,
+ IM_YET_TO_BE_USED = 26,
+
+ // IM that notifie of a new group election.
+ // Name is name of person who called vote.
+ // ID is election ID used for internal tracking
+ IM_GROUP_ELECTION_DEPRECATED = 27,
+
+ // IM to tell the user to go to an URL. Put a text message in the
+ // message field, and put the url with a trailing \0 in the binary
+ // bucket.
+ IM_GOTO_URL = 28,
+
+ // IM for help from the GAURDIAN_ANGELS
+ // Binary bucket contains the name of the session.
+ IM_SESSION_911_START = 29,
+
+ // IM sent automatically on call for help,
+ // sends a lure to each Helper reached
+ IM_LURE_911 = 30,
+
+ // a message generated by a script which we don't want to
+ // be sent through e-mail. Similar to IM_FROM_TASK, but
+ // it is shown as an alert on the viewer.
+ IM_FROM_TASK_AS_ALERT = 31,
+
+ // IM from group officer to all group members.
+ IM_GROUP_NOTICE = 32,
+ IM_GROUP_NOTICE_INVENTORY_ACCEPTED = 33,
+ IM_GROUP_NOTICE_INVENTORY_DECLINED = 34,
+
+ IM_GROUP_INVITATION_ACCEPT = 35,
+ IM_GROUP_INVITATION_DECLINE = 36,
+
+ IM_GROUP_NOTICE_REQUESTED = 37,
+
+ IM_FRIENDSHIP_OFFERED = 38,
+ IM_FRIENDSHIP_ACCEPTED = 39,
+ IM_FRIENDSHIP_DECLINED = 40,
+
+ IM_TYPING_START = 41,
+ IM_TYPING_STOP = 42,
+
+ IM_COUNT
+};
+
+
+// Hooks for quickly hacking in experimental admin debug messages
+// without needing to recompile the viewer
+// *NOTE: This functionality has been moved to be a string based
+// operation so that we don't even have to do a full recompile. This
+// enumeration will be phased out soon.
+enum EGodlikeRequest
+{
+ GOD_WANTS_NOTHING,
+
+ // for requesting physics information about an object
+ GOD_WANTS_HAVOK_INFO,
+
+ // two unused requests that can be appropriated for debug
+ // purposes (no viewer recompile necessary)
+ GOD_WANTS_FOO,
+ GOD_WANTS_BAR,
+
+ // to dump simulator terrain data to terrain.raw file
+ GOD_WANTS_TERRAIN_SAVE,
+ // to load simulator terrain data from terrain.raw file
+ GOD_WANTS_TERRAIN_LOAD,
+
+ GOD_WANTS_TOGGLE_AVATAR_GEOMETRY, // HACK for testing new avatar geom
+
+ // real-time telehub operations
+ GOD_WANTS_TELEHUB_INFO,
+ GOD_WANTS_CONNECT_TELEHUB,
+ GOD_WANTS_DELETE_TELEHUB,
+ GOD_WANTS_ADD_TELEHUB_SPAWNPOINT,
+ GOD_WANTS_REMOVE_TELEHUB_SPAWNPOINT,
+
+};
+
+enum EIMSource
+{
+ IM_FROM_VIEWER,
+ IM_FROM_DATASERVER,
+ IM_FROM_SIM
+};
+
+extern const U8 IM_ONLINE;
+extern const U8 IM_OFFLINE;
+
+extern const S32 VOTE_YES;
+extern const S32 VOTE_NO;
+extern const S32 VOTE_ABSTAIN;
+
+extern const S32 VOTE_MAJORITY;
+extern const S32 VOTE_SUPER_MAJORITY;
+extern const S32 VOTE_UNANIMOUS;
+
+extern const char EMPTY_BINARY_BUCKET[];
+extern const S32 EMPTY_BINARY_BUCKET_SIZE;
+
+extern const U32 NO_TIMESTAMP;
+extern const char SYSTEM_FROM[];
+
+// Number of retry attempts on sending the im.
+extern const S32 IM_TTL;
+
+
+class LLIMInfo : public LLRefCount
+{
+protected:
+ LLIMInfo();
+ ~LLIMInfo();
+
+public:
+ LLIMInfo(LLMessageSystem* msg,
+ EIMSource source = IM_FROM_SIM,
+ S32 ttl = IM_TTL);
+
+ LLIMInfo(
+ const LLUUID& from_id,
+ BOOL from_group,
+ const LLUUID& to_id,
+ EInstantMessage im_type,
+ const std::string& name,
+ const std::string& message,
+ const LLUUID& id,
+ U32 parent_estate_id,
+ const LLUUID& region_id,
+ const LLVector3& position,
+ LLSD data,
+ U8 offline,
+ U32 timestamp,
+ EIMSource source,
+ S32 ttl = IM_TTL);
+
+ void packInstantMessage(LLMessageSystem* msg) const;
+ void packMessageBlock(LLMessageSystem* msg) const;
+ void unpackMessageBlock(LLMessageSystem* msg);
+ LLPointer<LLIMInfo> clone();
+public:
+ LLUUID mFromID;
+ BOOL mFromGroup;
+ LLUUID mToID;
+ U32 mParentEstateID;
+ LLUUID mRegionID;
+ LLVector3 mPosition;
+ U8 mOffline;
+ bool mViewerThinksToIsOnline;
+ EInstantMessage mIMType;
+ LLUUID mID;
+ U32 mTimeStamp;
+ std::string mName;
+ std::string mMessage;
+ LLSD mData;
+
+ EIMSource mSource;
+ S32 mTTL;
+};
+
+
+void pack_instant_message(
+ LLMessageSystem* msgsystem,
+ const LLUUID& from_id,
+ BOOL from_group,
+ const LLUUID& session_id,
+ const LLUUID& to_id,
+ const char* name,
+ const char* message,
+ U8 offline = IM_ONLINE,
+ EInstantMessage dialog = IM_NOTHING_SPECIAL,
+ const LLUUID& id = LLUUID::null,
+ U32 parent_estate_id = 0,
+ const LLUUID& region_id = LLUUID::null,
+ const LLVector3& position = LLVector3::zero,
+ U32 timestamp = NO_TIMESTAMP,
+ const U8* binary_bucket = (U8*)EMPTY_BINARY_BUCKET,
+ S32 binary_bucket_size = EMPTY_BINARY_BUCKET_SIZE);
+
+void pack_instant_message_block(
+ LLMessageSystem* msgsystem,
+ const LLUUID& from_id,
+ BOOL from_group,
+ const LLUUID& session_id,
+ const LLUUID& to_id,
+ const char* name,
+ const char* message,
+ U8 offline = IM_ONLINE,
+ EInstantMessage dialog = IM_NOTHING_SPECIAL,
+ const LLUUID& id = LLUUID::null,
+ U32 parent_estate_id = 0,
+ const LLUUID& region_id = LLUUID::null,
+ const LLVector3& position = LLVector3::zero,
+ U32 timestamp = NO_TIMESTAMP,
+ const U8* binary_bucket = (U8*)EMPTY_BINARY_BUCKET,
+ S32 binary_bucket_size = EMPTY_BINARY_BUCKET_SIZE);
+
+
+#endif // LL_LLINSTANTMESSAGE_H
+