コード例 #1
0
        public Task <int> SaveAsync <T>(T input) where T : IPayload
        {
            var tcs = new TaskCompletionSource <int>();

            this.actor.SaveCompletedEvent += (object s, CallBackEventArgs e) =>
            {
                if (e.Error != null)
                {
                    tcs.TrySetException(e.Error);
                }
                else if (e.Cancelled)
                {
                    tcs.TrySetCanceled();
                }
                else
                {
                    tcs.TrySetResult(e.Result);
                }
            };

            try
            {
                var dbPayload = new DBPayload <T>();
                dbPayload.Payload = input;
                if (this.actor.OutputChannelDisposed == true)
                {
                    throw new ChannelDisposedException(new StringBuilder().Append("the OutputChannel on this actor has been Disposed, The Actor is : ").Append(this.actor.Id.ToString()).ToString());
                }

                this.actor.SendOneMessageOfType <DBPayload <T> >(this.actor.OutRoute, dbPayload, this.actor.Serializer, this.actor.OutputChannel);

                if (this.actor.IsRunning == false)
                {
                    Task.Run(() =>
                    {
                        this.actor.Start <DBPayload <T> >();
                    });
                }
            }
            catch (ChannelDisposedException e)
            {
                tcs.TrySetException(e);
            }

            return(tcs.Task);
        }
コード例 #2
0
 public int Save <T>(DBPayload <T> dBPayload)
 {
     Writeline(dBPayload.ToString());
     return(1);
 }
コード例 #3
0
        public static DBPayload <T> DeserializeDBPayload <T>(string body)
        {
            DBPayload <T> pl = (DBPayload <T>)JsonConvert.DeserializeObject <DBPayload <T> >(body, new DBPayloadConverter());

            return(pl);
        }
コード例 #4
0
 public string GetSerializedPayload <T>(DBPayload <T> message)
 {
     return(JsonConvert.SerializeObject(message, Formatting.None));
 }
コード例 #5
0
 public byte[] GetBufferizedPayload <T>(DBPayload <T> message)
 {
     return(encoding.GetBytes(this.GetSerializedPayload <T>(message)));
 }