예제 #1
0
        protected Message ReadMessageFromTableEntity(WcfTableEntity entity)
        {
            // TODO: stackalloc
            byte[] data       = null;
            var    byteLength = Encoding.UTF8.GetByteCount(entity.Message);

            data = this.bufferManager.TakeBuffer(byteLength);
            Encoding.UTF8.GetBytes(entity.Message, 0, entity.Message.Length, data, 0);
            var buffer = new ArraySegment <byte>(data, 0, byteLength);

            return(this.DecodeMessage(buffer));
        }
예제 #2
0
        protected async Task <Message> PopMessageFromTableAsync(string tableName, TableQuery <WcfTableEntity> tableQuery)
        {
            WcfTableEntity entity = null;

            try
            {
                entity = await this.GetTableEntityAsync(tableQuery);

                return(this.ReadMessageFromTableEntity(entity));
            }
            finally
            {
                if (entity != null)
                {
                    await this.RemoveTableEntityAsync(tableName, entity);
                }
            }
        }
예제 #3
0
        protected async Task <WcfTableEntity> PopEntryFromTableAsync(string tableName)
        {
            WcfTableEntity entity = null;

            try
            {
                entity = await this.GetTableEntityAsync(this.BuildTableQuery());

                return(entity);
            }
            finally
            {
                if (entity != null)
                {
                    await this.RemoveTableEntityAsync(tableName, entity);
                }
            }
        }