public static unsafe UInt32 PartyXblFinishProcessingStateChanges( PARTY_XBL_HANDLE handle, List <PARTY_XBL_STATE_CHANGE> stateChanges) { UInt32 err; if (handle == null) { return(PartyError.InvalidArg); } IntPtr *stateChangeIds = stackalloc IntPtr[stateChanges.Count]; for (Int32 i = 0; i < stateChanges.Count; i++) { stateChangeIds[i] = stateChanges[i].StateChangeId; } stateChanges.Clear(); objectPool.Return(stateChanges); err = PartyXblInterop.PartyXblFinishProcessingStateChanges( handle.InteropHandle, (UInt32)stateChanges.Count, new IntPtr(stateChangeIds)); return(err); }
public static UInt32 PartyXblDestroyChatUser( PARTY_XBL_HANDLE handle, PARTY_XBL_CHAT_USER_HANDLE chatUser) { if (handle == null || chatUser == null) { return(PartyError.InvalidArg); } return(PartyXblInterop.PartyXblDestroyChatUser(handle.InteropHandle, chatUser.InteropHandle)); }
public static UInt32 PartyXblInitialize( string titleId, out PARTY_XBL_HANDLE handle) { Interop.PARTY_XBL_HANDLE interopHandle; UInt32 err = PartyXblInterop.PartyXblInitialize( IntPtr.Zero, Converters.StringToNullTerminatedUTF8ByteArray(titleId), out interopHandle); return(PARTY_XBL_HANDLE.WrapAndReturnError(err, interopHandle, out handle)); }
internal static UInt32 WrapAndReturnError(UInt32 error, Interop.PARTY_XBL_HANDLE interopHandle, out PARTY_XBL_HANDLE handle) { if (PartyError.SUCCEEDED(error)) { handle = new PARTY_XBL_HANDLE(interopHandle); } else { handle = default(PARTY_XBL_HANDLE); } return(error); }
public static unsafe UInt32 PartyXblStartProcessingStateChanges( PARTY_XBL_HANDLE handle, out List <PARTY_XBL_STATE_CHANGE> stateChanges) { UInt32 err; stateChanges = null; if (handle == null) { return(PartyError.InvalidArg); } UInt32 stateChangeCount; IntPtr rawStateChanges; stateChanges = objectPool.Retrieve <List <PARTY_XBL_STATE_CHANGE> >(); err = PartyXblInterop.PartyXblStartProcessingStateChanges(handle.InteropHandle, out stateChangeCount, out rawStateChanges); if (PartyError.SUCCEEDED(err) && stateChangeCount > 0) { List <PARTY_XBL_STATE_CHANGE> unsupportStateChanges = null; IntPtr *arrayPtr = (IntPtr *)rawStateChanges.ToPointer(); for (Int32 i = 0; i < stateChangeCount; i++) { PARTY_XBL_STATE_CHANGE stateChangeObj = PARTY_XBL_STATE_CHANGE.CreateFromPtr(arrayPtr[i]); if (stateChangeObj.GetType() != typeof(PARTY_XBL_STATE_CHANGE)) { stateChanges.Add(stateChangeObj); } else { // Remove and immediately finish processing state changes that aren't supported by the // CSharp wrapper, which will all be of the basic PARTY_STATE_CHANGE type if (unsupportStateChanges == null) { unsupportStateChanges = objectPool.Retrieve <List <PARTY_XBL_STATE_CHANGE> >(); } unsupportStateChanges.Add(stateChangeObj); } } if (unsupportStateChanges != null) { err = PartyXblFinishProcessingStateChanges(handle, unsupportStateChanges); } } return(err); }
public static UInt32 PartyXblGetChatUsers( PARTY_XBL_HANDLE handle, out PARTY_XBL_CHAT_USER_HANDLE[] chatUsers) { chatUsers = null; if (handle == null) { return(PartyError.InvalidArg); } return(MarshalHelpers.GetArrayOfObjects <Interop.PARTY_XBL_HANDLE, Interop.PARTY_XBL_CHAT_USER_HANDLE, PARTY_XBL_CHAT_USER_HANDLE>( PartyXblInterop.PartyXblGetChatUsers, s => new PARTY_XBL_CHAT_USER_HANDLE(s), handle.InteropHandle, out chatUsers)); }
public static UInt32 PartyXblCreateRemoteChatUser( PARTY_XBL_HANDLE handle, UInt64 xboxUserId, out PARTY_XBL_CHAT_USER_HANDLE chatUser) { chatUser = null; if (handle == null) { return(PartyError.InvalidArg); } Interop.PARTY_XBL_CHAT_USER_HANDLE interopHandle; UInt32 err = PartyXblInterop.PartyXblCreateRemoteChatUser( handle.InteropHandle, xboxUserId, out interopHandle); return(PARTY_XBL_CHAT_USER_HANDLE.WrapAndReturnError(err, interopHandle, out chatUser)); }
public static UInt32 PartyXblCompleteGetTokenAndSignatureRequest( PARTY_XBL_HANDLE handle, UInt32 correlationId, bool succeeded, string token, string signature) { if (handle == null) { return(PartyError.InvalidArg); } return(PartyXblInterop.PartyXblCompleteGetTokenAndSignatureRequest( handle.InteropHandle, correlationId, Convert.ToByte(succeeded), Converters.StringToNullTerminatedUTF8ByteArray(token), Converters.StringToNullTerminatedUTF8ByteArray(signature))); }
public static UInt32 PartyXblCreateLocalChatUser( PARTY_XBL_HANDLE handle, UInt64 xboxUserId, Object asyncIdentifier, out PARTY_XBL_CHAT_USER_HANDLE localXboxLiveUser) { localXboxLiveUser = null; if (handle == null) { return(PartyError.InvalidArg); } var asyncId = IntPtr.Zero; if (asyncIdentifier != null) { asyncId = GCHandle.ToIntPtr(GCHandle.Alloc(asyncIdentifier)); } Interop.PARTY_XBL_CHAT_USER_HANDLE interopHandle; UInt32 err = PartyXblInterop.PartyXblCreateLocalChatUser( handle.InteropHandle, xboxUserId, asyncId, out interopHandle); if (PartyError.SUCCEEDED(err)) { localXboxLiveUser = new PARTY_XBL_CHAT_USER_HANDLE(interopHandle); } else { if (asyncId != IntPtr.Zero) { GCHandle asyncGcHandle = GCHandle.FromIntPtr(asyncId); asyncGcHandle.Free(); } } return(err); }
public static UInt32 PartyXblCreateRemoteChatUser( PARTY_XBL_HANDLE handle, UInt64 xboxUserId, out PARTY_XBL_CHAT_USER_HANDLE chatUser) { chatUser = null; if (handle == null) { return(PartyError.InvalidArg); } Interop.PARTY_XBL_CHAT_USER_HANDLE interopHandle; UInt32 err = PartyXblInterop.PartyXblCreateRemoteChatUser( handle.InteropHandle, xboxUserId, out interopHandle); if (err == PartyErrorXblChatUserAlreadyExists) // if remote chat user already exists, return its handle without an error { err = PartyError.Success; } return(PARTY_XBL_CHAT_USER_HANDLE.WrapAndReturnError(err, interopHandle, out chatUser)); }
public static UInt32 PartyXblGetEntityIdsFromXboxLiveUserIds( PARTY_XBL_HANDLE handle, UInt64[] xboxLiveUserIds, PARTY_XBL_CHAT_USER_HANDLE localChatUser, Object asyncIdentifier) { if (handle == null || xboxLiveUserIds == null || localChatUser == null) { return(PartyError.InvalidArg); } var asyncId = IntPtr.Zero; if (asyncIdentifier != null) { asyncId = GCHandle.ToIntPtr(GCHandle.Alloc(asyncIdentifier)); } UInt32 err = PartyXblInterop.PartyXblGetEntityIdsFromXboxLiveUserIds( handle.InteropHandle, (UInt32)xboxLiveUserIds.Length, xboxLiveUserIds, localChatUser.InteropHandle, asyncId); if (PartyError.FAILED(err)) { if (asyncId != IntPtr.Zero) { GCHandle asyncGcHandle = GCHandle.FromIntPtr(asyncId); asyncGcHandle.Free(); } } return(err); }
public static UInt32 PartyXblCleanup( PARTY_XBL_HANDLE handle) { return(PartyXblInterop.PartyXblCleanup(handle.InteropHandle)); }