private void OnRetrievedShare(IntPtr shares, int size) { long longPtr = shares.ToInt64(); var shs = new List <MegacoolShare>(size); for (int i = 0; i < size; i++) { IntPtr structPtr = new IntPtr(longPtr); MCLShare shareData = (MCLShare)Marshal.PtrToStructure(structPtr, typeof(MCLShare)); longPtr += Marshal.SizeOf(typeof(MCLShare)); MegacoolShare share = BuildShare(ref shareData); shs.Add(share); } Action <List <MegacoolShare> > handler = OnSharesRetrieved; if (handler != null) { handler(shs); } }
private static MegacoolShare BuildShare(ref MCLShare share) { if (share.url == null) { return(null); } MegacoolReferralCode referralCode = BuildReferralCode(ref share.referral_code); DateTime createdAt = epoch.AddSeconds(share.created_at).ToLocalTime(); DateTime updatedAt = epoch.AddSeconds(share.updated_at).ToLocalTime(); string url = string.Copy(share.url); Uri uri = new Uri(url, UriKind.Relative); Dictionary <string, object> data; if (share.data_json != null) { data = DeserializeDataObject(share.data_json); } else { data = new Dictionary <string, object>(); } return(new MegacoolShare(referralCode, share.state, createdAt, updatedAt, data, uri)); }
private static bool DeleteSharesFilter(MCLShare shareData) { MegacoolShare share = BuildShare(ref shareData); return(deleteSharesFilter(share)); }