1
0
KF2-Dev-Scripts/IpDrv/Classes/McpMessageBase.uc
2020-12-13 18:01:13 +03:00

224 lines
6.6 KiB
Ucode

/**
* Copyright 1998-2013 Epic Games, Inc. All Rights Reserved.
*
* Provides the interface for McpMessages and the factory method
* for creating the registered implementing object
*/
class McpMessageBase extends McpServiceBase
native
abstract
config(Engine);
/** The class name to use in the factory method to create our instance */
var config string McpMessageManagerClassName;
/** Compression types supported */
enum EMcpMessageCompressionType
{
MMCT_NONE,
MMCT_LZO,
MMCT_ZLIB
};
/** Default Compression Type */
var config EMcpMessageCompressionType CompressionType;
/**
* Message
*/
struct native McpMessage
{
/**
* Unique id to use as a key for this message
*/
var String MessageId;
/**
* The user id to deliver this message to
*/
var String ToUniqueUserId;
/**
* The user id this message is from
*/
var String FromUniqueUserId;
/**
* The friendly name of the user sending the data
*/
var String FromFriendlyName;
/**
* The application specific message type
*/
var String MessageType;
/**
* The date until this message is no longer valid (should be deleted)
*/
var String ValidUntil;
/**
* The compression type of this message so the client knows how to de-compress the payload
*/
var EMcpMessageCompressionType MessageCompressionType;
};
/**
* List of Messages belonging to one user
*/
struct native McpMessageList
{
/** User that User the messages were Sent To */
var string ToUniqueUserId;
/** Collection of groups that the user owns OR belongs to */
var array<McpMessage> Messages;
};
/**
* Message Contents
*/
struct native McpMessageContents
{
/**
* Message Id
*/
var string MessageId;
/**
* Payload holding the contents of the message
*/
var array<byte> MessageContents;
};
/** Holds the MessageContents for each user in memory */
var array<McpMessageContents> MessageContentsList;
/** Holds the members for each user in memory */
var array<McpMessageList> MessageLists;
/**
* Create Instance of an McpMessage
* @return the object that implements this interface or none if missing or failed to create/load
*/
static final function McpMessageBase CreateInstance()
{
local class<McpMessageBase> McpMessageBaseClass;
local McpMessageBase NewInstance;
McpMessageBaseClass = class<McpMessageBase>(DynamicLoadObject(default.McpMessageManagerClassName,class'Class'));
if (McpMessageBaseClass != None)
{
NewInstance = new McpMessageBaseClass;
NewInstance.Init();
}
return NewInstance;
}
/**
* Creates the URL and sends the request to create a Message.
* - This updates the message on the server. QueryMessages will need to be
* - run again before GetMessages will reflect the this new message.
* @param ToUniqueUserIds the ids of users to send a message to
* @param FromUniqueUserId of the user who sent the message
* @param FromFriendlyName The friendly name of the user sending the data
* @param MessageType The application specific message type
* @param PushMessage to be sent to user via push notifications
* @param ValidUntil The date until this message is no longer valid (should be deleted)
* @param MessageContents payload of the message
*/
function CreateMessage(
const out array<String> ToUniqueUserIds,
String FromUniqueUserId,
String FromFriendlyName,
String MessageType,
String PushMessage,
String ValidUntil,
const out array<byte> MessageContents);
/**
* Called once the results come back from the server to indicate success/failure of the operation
*
* @param Message the group id of the group that was created
* @param bWasSuccessful whether the operation succeeded or not
* @param Error string information about the error (if an error)
*/
delegate OnCreateMessageComplete(McpMessage Message, bool bWasSuccessful, String Error);
/**
* Deletes a Message by MessageId
*
* @param MessageId Id of the group
*/
function DeleteMessage(String MessageId);
/**
* Called once the results come back from the server to indicate success/failure of the operation
*
* @param MessageId the group id of the group that was Deleted
* @param bWasSuccessful whether the operation succeeded or not
* @param Error string information about the error (if an error)
*/
delegate OnDeleteMessageComplete(String MessageId, bool bWasSuccessful, String Error);
/**
* Queries the backend for the Messages belonging to the supplied UserId
*
* @param UniqueUserId the id of the owner of the groups to return
*/
function QueryMessages(String ToUniqueUserId);
/**
* Called once the results come back from the server to indicate success/failure of the operation
*
* @param UserId the user id of the groups that were queried
* @param bWasSuccessful whether the operation succeeded or not
* @param Error string information about the error (if an error)
*/
delegate OnQueryMessagesComplete(string UserId, bool bWasSuccessful, String Error);
/**
* Returns the set of messages that sent to the specified UserId
* Called after QueryMessages.
*
* @param ToUniqueUserId the user the messages were sent to
* @param MessageList collection of messages
*/
function GetMessageList(string ToUniqueUserId, out McpMessageList MessageList);
/**
* Queries the back-end for the Messages Contents belonging to the specified group
*
* @param MessageId the id of the owner of the groups to return
*/
function QueryMessageContents(String MessageId);
/**
* Called once the results come back from the server to indicate success/failure of the operation
*
* @param MessageId the id of the group from which the members were queried
* @param bWasSuccessful whether the operation succeeded or not
* @param Error string information about the error (if an error)
*/
delegate OnQueryMessageContentsComplete(String MessageId, bool bWasSuccessful, String Error);
/**
* Returns a copy of the Message Contents that belong to the specified MessageId
* Called after QueryMessageContents.
*
* @param MessageId
* @param MessageContents
*/
function bool GetMessageContents(String MessageId, out array<byte> MessageContents);
/**
*Store group in an object in memory instead of having to query the server again for it
*
* @param Message to be placed in the cache
*/
function CacheMessage( McpMessage Message);
/**
*Store group member in an object in memory instead of having to query the server again for it
*
* @param MessageContents Message payload
* @param MessageId to be placed in the cache
*/
function bool CacheMessageContents(const out array<byte> MessageContents, String MessageId);