Beispiel #1
0
        public Message GetRawMessage(string messageID)
        {
            TableOperation retrieveOperation = RetrieveUserlineMsgByID <BaseMessageEntity>(messageID);

            TableResult retrievedResult = _userline.ExecuteRetriveOperation(retrieveOperation);

            if (retrievedResult.Result != null)
            {
                BaseMessageEntity entity = (BaseMessageEntity)retrievedResult.Result;
                return(entity.ToMessage());
            }
            return(null);
        }
Beispiel #2
0
        public Attachment GetAttachmentInfo(string attachmetID)
        {
            if (string.IsNullOrEmpty(attachmetID))
            {
                return(null);
            }

            string[] split = attachmetID.Split(';');
            if (split.Length != 2)
            {
                return(null);
            }

            string         pk = split[0];
            string         rk = split[1];
            TableOperation retrieveOperation = TableOperation.Retrieve <AttachmentEntity>(pk, rk);
            TableResult    retrievedResult   = _attachment.ExecuteRetriveOperation(retrieveOperation);

            if (retrievedResult.Result == null)
            {
                return(null);
            }
            AttachmentEntity entity = (AttachmentEntity)retrievedResult.Result;

            return(entity.toAttachment());
        }
Beispiel #3
0
        public CounterRecord GetSingleCounterRecord(string groupID, string name, int number = 0)
        {
            TableOperation retrieveOperation = TableOperation.Retrieve(
                ToRecordPK(groupID, name),
                ToRecordRK(number));

            return(CounterRecordHelper.ParseEntity(
                       _counterRecord.ExecuteRetriveOperation(retrieveOperation).Result as DynamicTableEntity
                       ));
        }
Beispiel #4
0
        public CounterSetEntity GetCounterSet(string groupID, string name)
        {
            TableOperation retrieveOperation = TableOperation.Retrieve <CounterSetEntity>(groupID, name);
            TableResult    result            = _counterSet.ExecuteRetriveOperation(retrieveOperation);

            if (result.Result == null)
            {
                return(null);
            }
            CounterSetEntity entity = (CounterSetEntity)result.Result;

            return(entity);
        }
Beispiel #5
0
        private SearchResult GetSearchHistory(string searchId)
        {
            TableResult         result = _searchHistoryTable.ExecuteRetriveOperation(TableOperation.Retrieve <SearchHistoryEntity>(searchId, searchId));
            SearchHistoryEntity entity = result.Result as SearchHistoryEntity;

            if (entity != null)
            {
                return(new SearchResult(entity.ResultId, entity.LastSearchDateUTC, entity.TakenTime, entity.ResultsCount));
            }
            else
            {
                return(null);
            }
        }
Beispiel #6
0
        public string GetRichMessage(string richMsgID)
        {
            if (string.IsNullOrEmpty(richMsgID))
            {
                return(null);
            }
            string[] split = richMsgID.Split(';');
            if (split.Length != 2)
            {
                return(null);
            }

            TableOperation retrieveOperation = TableOperation.Retrieve <DynamicTableEntity>(split[0], split[1]);

            TableResult retrievedResult = _richMsg.ExecuteRetriveOperation(retrieveOperation);

            if (retrievedResult.Result != null)
            {
                DynamicTableEntity entity = (DynamicTableEntity)retrievedResult.Result;
                if (entity.Properties["RichMsgSize"].Int32Value == null)
                {
                    return("");
                }
                if (entity.Properties["RichMsgSize"].Int32Value <= 0)
                {
                    return("");
                }

                int    size          = entity.Properties["RichMsgSize"].Int32Value.Value;
                byte[] stringRawByte = new byte[size];

                int blockCount = (size - 1) / BlockSize + 1;
                for (int i = 0; i < blockCount; i++)
                {
                    int blockSize = 0;
                    if (i == (blockCount - 1))
                    {
                        blockSize = size % BlockSize;
                    }
                    else
                    {
                        blockSize = BlockSize;
                    }

                    Array.Copy(entity.Properties["Block" + i].BinaryValue, 0, stringRawByte, i * BlockSize, blockSize);
                }
                return(System.Text.Encoding.UTF8.GetString(stringRawByte));
            }
            return(null);
        }
Beispiel #7
0
        public void AppendDataRecord(int id, string key, string value)
        {
            if (System.Text.UTF8Encoding.UTF8.GetByteCount(key) > MetricRecordKeyTooLongException.MaxKeyLengthInByte)
            {
                throw new MetricRecordKeyTooLongException();
            }

            using (var _gorillaCtx = new MSGorillaEntities())
            {
                MetricDataSet data = _gorillaCtx.MetricDataSets.Find(id);
                if (data == null)
                {
                    throw new MetricDataSetNotFoundException();
                }

                MetricEntity mentity = null;
                if ((data.RecordCount % MetricEntity.MaxMetricRecord) == 0)
                {
                    //create a new entity
                    mentity = new MetricEntity(id.ToString(), data.RecordCount.ToString(RowKeyFormat));
                }
                else
                {
                    //retrive the last entity
                    TableResult result = _metricData.ExecuteRetriveOperation(
                        TableOperation.Retrieve <DynamicTableEntity>(
                            id.ToString(),
                            ((data.RecordCount / MetricEntity.MaxMetricRecord) * MetricEntity.MaxMetricRecord).ToString(RowKeyFormat)
                            )
                        );

                    mentity = new MetricEntity((DynamicTableEntity)result.Result);
                }

                //insert new data record
                mentity.Put(key, value, DateTime.UtcNow);
                TableOperation insertOperation = TableOperation.InsertOrReplace(mentity.ToITableEntity());
                _metricData.Execute(insertOperation);

                data.RecordCount++;
                _gorillaCtx.SaveChanges();
            }
        }