update mutex to rwlock

This commit is contained in:
bitfl0wer 2023-08-04 20:08:49 +02:00
parent a2561fd2e0
commit dad419c1de
7 changed files with 29 additions and 30 deletions

View File

@ -46,7 +46,7 @@ impl Instance {
login_result.token, login_result.token,
self.clone_limits_if_some(), self.clone_limits_if_some(),
login_result.settings, login_result.settings,
Arc::new(Mutex::new(object)), Arc::new(RwLock::new(object)),
gateway, gateway,
); );
Ok(user) Ok(user)

View File

@ -52,8 +52,8 @@ impl Instance {
Rc::new(RefCell::new(self.clone())), Rc::new(RefCell::new(self.clone())),
token.clone(), token.clone(),
self.clone_limits_if_some(), self.clone_limits_if_some(),
Arc::new(Mutex::new(settings)), Arc::new(RwLock::new(settings)),
Arc::new(Mutex::new(user_object)), Arc::new(RwLock::new(user_object)),
gateway, gateway,
); );
Ok(user) Ok(user)

View File

@ -62,7 +62,6 @@ impl Channel {
/// # Reference /// # Reference
/// See <https://discord-userdoccers.vercel.app/resources/channel#modify-channel> /// See <https://discord-userdoccers.vercel.app/resources/channel#modify-channel>
pub async fn modify( pub async fn modify(
&self,
modify_data: ChannelModifySchema, modify_data: ChannelModifySchema,
channel_id: Snowflake, channel_id: Snowflake,
user: &mut UserMeta, user: &mut UserMeta,

View File

@ -60,7 +60,7 @@ impl UserMeta {
.deserialize_response::<User>(self) .deserialize_response::<User>(self)
.await .await
.unwrap(); .unwrap();
self.object = Arc::new(Mutex::new(user_updated.clone())); self.object = Arc::new(RwLock::new(user_updated.clone()));
Ok(user_updated) Ok(user_updated)
} }

View File

@ -50,7 +50,7 @@ async fn modify_channel() {
default_thread_rate_limit_per_user: None, default_thread_rate_limit_per_user: None,
video_quality_mode: None, video_quality_mode: None,
}; };
let modified_channel = Channel::modify(channel, modify_data, channel.id, &mut bundle.user) let modified_channel = Channel::modify(modify_data, channel.id, &mut bundle.user)
.await .await
.unwrap(); .unwrap();
assert_eq!(modified_channel.name, Some(CHANNEL_NAME.to_string())); assert_eq!(modified_channel.name, Some(CHANNEL_NAME.to_string()));
@ -59,7 +59,7 @@ async fn modify_channel() {
PermissionFlags::MANAGE_CHANNELS, PermissionFlags::MANAGE_CHANNELS,
PermissionFlags::MANAGE_MESSAGES, PermissionFlags::MANAGE_MESSAGES,
])); ]));
let user_id: types::Snowflake = bundle.user.object.lock().unwrap().id; let user_id: types::Snowflake = bundle.user.object.read().unwrap().id;
let permission_override = PermissionOverwrite { let permission_override = PermissionOverwrite {
id: user_id, id: user_id,
overwrite_type: "1".to_string(), overwrite_type: "1".to_string(),
@ -144,7 +144,7 @@ async fn create_dm() {
let other_user = bundle.create_user("integrationtestuser2").await; let other_user = bundle.create_user("integrationtestuser2").await;
let user = &mut bundle.user; let user = &mut bundle.user;
let private_channel_create_schema = PrivateChannelCreateSchema { let private_channel_create_schema = PrivateChannelCreateSchema {
recipients: Some(Vec::from([other_user.object.lock().unwrap().id])), recipients: Some(Vec::from([other_user.object.read().unwrap().id])),
access_tokens: None, access_tokens: None,
nicks: None, nicks: None,
}; };
@ -160,11 +160,11 @@ async fn create_dm() {
.unwrap() .unwrap()
.get(0) .get(0)
.unwrap() .unwrap()
.lock() .read()
.unwrap() .unwrap()
.id .id
.clone(), .clone(),
other_user.object.lock().unwrap().id other_user.object.read().unwrap().id
); );
assert_eq!( assert_eq!(
dm_channel dm_channel
@ -173,11 +173,11 @@ async fn create_dm() {
.unwrap() .unwrap()
.get(1) .get(1)
.unwrap() .unwrap()
.lock() .read()
.unwrap() .unwrap()
.id .id
.clone(), .clone(),
user.object.lock().unwrap().id.clone() user.object.read().unwrap().id.clone()
); );
common::teardown(bundle).await; common::teardown(bundle).await;
} }
@ -189,9 +189,9 @@ async fn remove_add_person_from_to_dm() {
let mut bundle = common::setup().await; let mut bundle = common::setup().await;
let mut other_user = bundle.create_user("integrationtestuser2").await; let mut other_user = bundle.create_user("integrationtestuser2").await;
let mut third_user = bundle.create_user("integrationtestuser3").await; let mut third_user = bundle.create_user("integrationtestuser3").await;
let third_user_id = third_user.object.lock().unwrap().id; let third_user_id = third_user.object.read().unwrap().id;
let other_user_id = other_user.object.lock().unwrap().id; let other_user_id = other_user.object.read().unwrap().id;
let user_id = bundle.user.object.lock().unwrap().id; let user_id = bundle.user.object.read().unwrap().id;
let user = &mut bundle.user; let user = &mut bundle.user;
let private_channel_create_schema = PrivateChannelCreateSchema { let private_channel_create_schema = PrivateChannelCreateSchema {
recipients: Some(Vec::from([other_user_id, third_user_id])), recipients: Some(Vec::from([other_user_id, third_user_id])),
@ -234,7 +234,7 @@ async fn remove_add_person_from_to_dm() {
.unwrap() .unwrap()
.get(0) .get(0)
.unwrap() .unwrap()
.lock() .read()
.unwrap() .unwrap()
.id, .id,
other_user_id other_user_id
@ -246,7 +246,7 @@ async fn remove_add_person_from_to_dm() {
.unwrap() .unwrap()
.get(1) .get(1)
.unwrap() .unwrap()
.lock() .read()
.unwrap() .unwrap()
.id, .id,
user_id user_id

View File

@ -7,7 +7,7 @@ async fn add_remove_role() -> ChorusResult<()> {
let mut bundle = common::setup().await; let mut bundle = common::setup().await;
let guild = bundle.guild.id; let guild = bundle.guild.id;
let role = bundle.role.id; let role = bundle.role.id;
let member_id = bundle.user.object.lock().unwrap().id; let member_id = bundle.user.object.read().unwrap().id;
GuildMember::add_role(&mut bundle.user, guild, member_id, role).await?; GuildMember::add_role(&mut bundle.user, guild, member_id, role).await?;
let member = GuildMember::get(&mut bundle.user, guild, member_id) let member = GuildMember::get(&mut bundle.user, guild, member_id)
.await .await

View File

@ -7,9 +7,9 @@ async fn test_get_mutual_relationships() {
let mut bundle = common::setup().await; let mut bundle = common::setup().await;
let mut other_user = bundle.create_user("integrationtestuser2").await; let mut other_user = bundle.create_user("integrationtestuser2").await;
let user = &mut bundle.user; let user = &mut bundle.user;
let username = user.object.lock().unwrap().username.clone(); let username = user.object.read().unwrap().username.clone();
let discriminator = user.object.lock().unwrap().discriminator.clone(); let discriminator = user.object.read().unwrap().discriminator.clone();
let other_user_id: types::Snowflake = other_user.object.lock().unwrap().id; let other_user_id: types::Snowflake = other_user.object.read().unwrap().id;
let friend_request_schema = types::FriendRequestSendSchema { let friend_request_schema = types::FriendRequestSendSchema {
username, username,
discriminator: Some(discriminator), discriminator: Some(discriminator),
@ -28,8 +28,8 @@ async fn test_get_relationships() {
let mut bundle = common::setup().await; let mut bundle = common::setup().await;
let mut other_user = bundle.create_user("integrationtestuser2").await; let mut other_user = bundle.create_user("integrationtestuser2").await;
let user = &mut bundle.user; let user = &mut bundle.user;
let username = user.object.lock().unwrap().username.clone(); let username = user.object.read().unwrap().username.clone();
let discriminator = user.object.lock().unwrap().discriminator.clone(); let discriminator = user.object.read().unwrap().discriminator.clone();
let friend_request_schema = types::FriendRequestSendSchema { let friend_request_schema = types::FriendRequestSendSchema {
username, username,
discriminator: Some(discriminator), discriminator: Some(discriminator),
@ -41,7 +41,7 @@ async fn test_get_relationships() {
let relationships = user.get_relationships().await.unwrap(); let relationships = user.get_relationships().await.unwrap();
assert_eq!( assert_eq!(
relationships.get(0).unwrap().id, relationships.get(0).unwrap().id,
other_user.object.lock().unwrap().id other_user.object.read().unwrap().id
); );
common::teardown(bundle).await common::teardown(bundle).await
} }
@ -51,8 +51,8 @@ async fn test_modify_relationship_friends() {
let mut bundle = common::setup().await; let mut bundle = common::setup().await;
let mut other_user = bundle.create_user("integrationtestuser2").await; let mut other_user = bundle.create_user("integrationtestuser2").await;
let user = &mut bundle.user; let user = &mut bundle.user;
let user_id: types::Snowflake = user.object.lock().unwrap().id; let user_id: types::Snowflake = user.object.read().unwrap().id;
let other_user_id: types::Snowflake = other_user.object.lock().unwrap().id; let other_user_id: types::Snowflake = other_user.object.read().unwrap().id;
other_user other_user
.modify_user_relationship(user_id, types::RelationshipType::Friends) .modify_user_relationship(user_id, types::RelationshipType::Friends)
@ -61,7 +61,7 @@ async fn test_modify_relationship_friends() {
let relationships = user.get_relationships().await.unwrap(); let relationships = user.get_relationships().await.unwrap();
assert_eq!( assert_eq!(
relationships.get(0).unwrap().id, relationships.get(0).unwrap().id,
other_user.object.lock().unwrap().id other_user.object.read().unwrap().id
); );
assert_eq!( assert_eq!(
relationships.get(0).unwrap().relationship_type, relationships.get(0).unwrap().relationship_type,
@ -70,7 +70,7 @@ async fn test_modify_relationship_friends() {
let relationships = other_user.get_relationships().await.unwrap(); let relationships = other_user.get_relationships().await.unwrap();
assert_eq!( assert_eq!(
relationships.get(0).unwrap().id, relationships.get(0).unwrap().id,
user.object.lock().unwrap().id user.object.read().unwrap().id
); );
assert_eq!( assert_eq!(
relationships.get(0).unwrap().relationship_type, relationships.get(0).unwrap().relationship_type,
@ -102,7 +102,7 @@ async fn test_modify_relationship_block() {
let mut bundle = common::setup().await; let mut bundle = common::setup().await;
let mut other_user = bundle.create_user("integrationtestuser2").await; let mut other_user = bundle.create_user("integrationtestuser2").await;
let user = &mut bundle.user; let user = &mut bundle.user;
let user_id: types::Snowflake = user.object.lock().unwrap().id; let user_id: types::Snowflake = user.object.read().unwrap().id;
other_user other_user
.modify_user_relationship(user_id, types::RelationshipType::Blocked) .modify_user_relationship(user_id, types::RelationshipType::Blocked)
@ -113,7 +113,7 @@ async fn test_modify_relationship_block() {
let relationships = other_user.get_relationships().await.unwrap(); let relationships = other_user.get_relationships().await.unwrap();
assert_eq!( assert_eq!(
relationships.get(0).unwrap().id, relationships.get(0).unwrap().id,
user.object.lock().unwrap().id user.object.read().unwrap().id
); );
assert_eq!( assert_eq!(
relationships.get(0).unwrap().relationship_type, relationships.get(0).unwrap().relationship_type,