Files
back_cantanBuilding/LocalPackages/rtm-sdk-unity-2.7.20/Runtime/Plugins/LDEngine/IM.File.cs
2026-05-26 16:15:54 +08:00

223 lines
9.3 KiB
C#

using System.Collections;
using System.Collections.Generic;
using com.fpnn.common;
using com.fpnn.rtm;
using UnityEngine;
namespace com.fpnn.livedata
{
public partial class IM
{
public bool SendImageFile(MessageIdDelegate callback, MessageCategory messageCategory, long id, byte[] fileContent, string filename, string fileExtension = "", string attrs = "", int timeout = 120)
{
if (messageCategory == MessageCategory.P2PMessage)
{
return client.SendFile((long messageId, int errorCode) =>
{
RTMControlCenter.callbackQueue.PostAction(() =>
{
callback(messageId, errorCode);
});
}, id, MessageType.ImageFile, fileContent, filename, fileExtension, attrs, timeout);
}
else if (messageCategory == MessageCategory.GroupMessage)
{
return client.SendGroupFile((long messageId, int errorCode) =>
{
RTMControlCenter.callbackQueue.PostAction(() =>
{
callback(messageId, errorCode);
});
}, id, MessageType.ImageFile, fileContent, filename, fileExtension, attrs, timeout);
}
else if (messageCategory == MessageCategory.RoomMessage)
{
return client.SendRoomFile((long messageId, int errorCode) =>
{
RTMControlCenter.callbackQueue.PostAction(() =>
{
callback(messageId, errorCode);
});
}, id, MessageType.ImageFile, fileContent, filename, fileExtension, attrs, timeout);
}
else
{
RTMControlCenter.callbackQueue.PostAction(() =>
{
callback(0, rtm.ErrorCode.RTM_EC_INVALID_PARAMETER);
});
return false;
}
}
public bool SendAudioFile(MessageIdDelegate callback, MessageCategory messageCategory, long id, byte[] fileContent, string filename, string fileExtension = "", string attrs = "", int timeout = 120)
{
if (messageCategory == MessageCategory.P2PMessage)
{
return client.SendFile((long messageId, int errorCode) =>
{
RTMControlCenter.callbackQueue.PostAction(() =>
{
callback(messageId, errorCode);
});
}, id, MessageType.VoiceFile, fileContent, filename, fileExtension, attrs, timeout);
}
else if (messageCategory == MessageCategory.GroupMessage)
{
return client.SendGroupFile((long messageId, int errorCode) =>
{
RTMControlCenter.callbackQueue.PostAction(() =>
{
callback(messageId, errorCode);
});
}, id, MessageType.VoiceFile, fileContent, filename, fileExtension, attrs, timeout);
}
else if (messageCategory == MessageCategory.RoomMessage)
{
return client.SendRoomFile((long messageId, int errorCode) =>
{
RTMControlCenter.callbackQueue.PostAction(() =>
{
callback(messageId, errorCode);
});
}, id, MessageType.VoiceFile, fileContent, filename, fileExtension, attrs, timeout);
}
else
{
RTMControlCenter.callbackQueue.PostAction(() =>
{
callback(0, rtm.ErrorCode.RTM_EC_INVALID_PARAMETER);
});
return false;
}
}
public bool SendVideoFile(MessageIdDelegate callback, MessageCategory messageCategory, long id, byte[] fileContent, string filename, string fileExtension = "", string attrs = "", int timeout = 120)
{
if (messageCategory == MessageCategory.P2PMessage)
{
return client.SendFile((long messageId, int errorCode) =>
{
RTMControlCenter.callbackQueue.PostAction(() =>
{
callback(messageId, errorCode);
});
}, id, MessageType.VideoFile, fileContent, filename, fileExtension, attrs, timeout);
}
else if (messageCategory == MessageCategory.GroupMessage)
{
return client.SendGroupFile((long messageId, int errorCode) =>
{
RTMControlCenter.callbackQueue.PostAction(() =>
{
callback(messageId, errorCode);
});
}, id, MessageType.VideoFile, fileContent, filename, fileExtension, attrs, timeout);
}
else if (messageCategory == MessageCategory.RoomMessage)
{
return client.SendRoomFile((long messageId, int errorCode) =>
{
RTMControlCenter.callbackQueue.PostAction(() =>
{
callback(messageId, errorCode);
});
}, id, MessageType.VideoFile, fileContent, filename, fileExtension, attrs, timeout);
}
else
{
RTMControlCenter.callbackQueue.PostAction(() =>
{
callback(0, rtm.ErrorCode.RTM_EC_INVALID_PARAMETER);
});
return false;
}
}
public bool SendAudioMessage(MessageIdDelegate callback, MessageCategory messageCategory, long id, byte[] fileContent, string filename, string fileExtension = "", string attrs = "", int timeout = 120)
{
if (messageCategory == MessageCategory.P2PMessage)
{
return client.SendFile((long messageId, int errorCode) =>
{
RTMControlCenter.callbackQueue.PostAction(() =>
{
callback(messageId, errorCode);
});
}, id, MessageType.AudioFile, fileContent, filename, fileExtension, attrs, timeout);
}
else if (messageCategory == MessageCategory.GroupMessage)
{
return client.SendGroupFile((long messageId, int errorCode) =>
{
RTMControlCenter.callbackQueue.PostAction(() =>
{
callback(messageId, errorCode);
});
}, id, MessageType.AudioFile, fileContent, filename, fileExtension, attrs, timeout);
}
else if (messageCategory == MessageCategory.RoomMessage)
{
return client.SendRoomFile((long messageId, int errorCode) =>
{
RTMControlCenter.callbackQueue.PostAction(() =>
{
callback(messageId, errorCode);
});
}, id, MessageType.AudioFile, fileContent, filename, fileExtension, attrs, timeout);
}
else
{
RTMControlCenter.callbackQueue.PostAction(() =>
{
callback(0, rtm.ErrorCode.RTM_EC_INVALID_PARAMETER);
});
return false;
}
}
public bool SendNormalFile(MessageIdDelegate callback, MessageCategory messageCategory, long id, byte[] fileContent, string filename, string fileExtension = "", string attrs = "", int timeout = 120)
{
if (messageCategory == MessageCategory.P2PMessage)
{
return client.SendFile((long messageId, int errorCode) =>
{
RTMControlCenter.callbackQueue.PostAction(() =>
{
callback(messageId, errorCode);
});
}, id, MessageType.NormalFile, fileContent, filename, fileExtension, attrs, timeout);
}
else if (messageCategory == MessageCategory.GroupMessage)
{
return client.SendGroupFile((long messageId, int errorCode) =>
{
RTMControlCenter.callbackQueue.PostAction(() =>
{
callback(messageId, errorCode);
});
}, id, MessageType.NormalFile, fileContent, filename, fileExtension, attrs, timeout);
}
else if (messageCategory == MessageCategory.RoomMessage)
{
return client.SendRoomFile((long messageId, int errorCode) =>
{
RTMControlCenter.callbackQueue.PostAction(() =>
{
callback(messageId, errorCode);
});
}, id, MessageType.NormalFile, fileContent, filename, fileExtension, attrs, timeout);
}
else
{
RTMControlCenter.callbackQueue.PostAction(() =>
{
callback(0, rtm.ErrorCode.RTM_EC_INVALID_PARAMETER);
});
return false;
}
}
}
}