Esempio n. 1
0
        private async Task <PPError> TouchAsyncCore(DateTime lastAccessTime, DateTime lastModifiedTime, MessageLoop messageLoop = null)
        {
            var tcs = new TaskCompletionSource <PPError>();
            EventHandler <PPError> handler = (s, e) => { tcs.TrySetResult(e); };

            try
            {
                HandleTouch += handler;

                if (MessageLoop == null && messageLoop == null)
                {
                    Touch(lastAccessTime, lastModifiedTime);
                }
                else
                {
                    Action <PPError> action = new Action <PPError>((e) =>
                    {
                        var result = (PPError)PPBFileRef.Touch(this,
                                                               PepperSharpUtils.ConvertToPepperTimestamp(lastAccessTime),
                                                               PepperSharpUtils.ConvertToPepperTimestamp(lastModifiedTime),
                                                               new BlockUntilComplete()
                                                               );
                        tcs.TrySetResult(result);
                    }
                                                                   );
                    InvokeHelper(action, messageLoop);
                }
                return(await tcs.Task);
            }
            catch (Exception exc)
            {
                Console.WriteLine(exc.Message);
                tcs.SetException(exc);
                return(PPError.Aborted);
            }
            finally
            {
                HandleTouch -= handler;
            }
        }
Esempio n. 2
0
 /// <summary>
 /// Touch() Updates time stamps for a file.  You must have write access to the
 /// file if it exists in the external filesystem.
 /// </summary>
 /// <param name="lastAccessTime">The last time the file was accessed.</param>
 /// <param name="lastModifiedTime">The last time the file was modified.</param>
 /// <returns>Ok if all went well</returns>
 public PPError Touch(DateTime lastAccessTime, DateTime lastModifiedTime)
 => (PPError)PPBFileRef.Touch(this,
                              PepperSharpUtils.ConvertToPepperTimestamp(lastAccessTime),
                              PepperSharpUtils.ConvertToPepperTimestamp(lastModifiedTime),
                              new CompletionCallback(OnTouch));