示例#1
0
 public void MarkAsRead(MessagesMessage message)
 {
     cit.Messages.MarkAsRead(new Citrina.StandardApi.Models.MessagesMarkAsReadRequest()
     {
         AccessToken = token, PeerId = message.UserId.ToString(), StartMessageId = message.Id
     });
 }
示例#2
0
 /// <summary> Преобразование сообщения из пакета Citrina в собственный тип сообщения </summary>
 private Message CitrinaMessageToMyMessage(MessagesMessage message, MessageDirection dir)
 {
     return(new Message(message.UserId.Value, message.Date.Value, dir, message.Body, message.Attachments != null ? string.Join(",", message.Attachments.Select(a => a.ToString())) : ""));
 }
示例#3
0
        public void EncodeMessage <T>(T oModel, int slotNumber) where T : class
        {
            try
            {
                long messageType = 0;

                uint msgHeaderSize  = 0;
                uint msgRequestSize = 0;
                //uint msgRepeatSize = 0;

                string modelName = string.Empty;

                EHeader oLogonHeader = new EHeader();

                modelName = oModel.GetType().Name;

                messageType = ConfigurationMasterMemory.RequestDict.Where(x => x.Value.Name.ToLower() == modelName.ToLower()).FirstOrDefault().Key;

                MessagesMessage msgHeader = ConfigurationMasterMemory.RequestDict[50];

                MessagesMessage requestMsgBody = ConfigurationMasterMemory.RequestDict[messageType];

                //if (requestMsgBody.Items.Any(x => x.Source == "R"))
                //{
                //    CommonFrontEnd.ControllerModel.SenderControllerModel.MessagesMessage repeatMsgBody = CommonFrontEnd.SharedMemories.ConfigurationMasterMemory.RepeatDict[messageType];
                //    msgRepeatSize = Convert.ToUInt16(repeatMsgBody.Items.Sum(x => x.length));
                //    var NoOfEntries = oModel.GetType().GetProperty("NoQuoteEntries").GetValue(oModel);
                //    for (int i = 0; i < length; i++)
                //    {

                //    }
                //}
                msgRequestSize = Convert.ToUInt16(requestMsgBody.Items.Sum(x => x.Length));

                msgHeaderSize = Convert.ToUInt16(msgHeader.Items.Sum(x => x.Length));

                //msgRequestSize = msgRequestSize + msgRepeatSize;

                oLogonHeader.MessageType = Convert.ToUInt32(messageType);        //Convert.ToUInt16(oModel.GetType().GetProperty("MessageType").GetValue(oModel))
                oLogonHeader.BodyLength  = (msgHeaderSize + msgRequestSize) - 8; //subtract header size of 8 bytes as per IML
                if (messageType == 7)                                            //UserRegistrationRequest
                {
                    oLogonHeader.SlotNo = -1;
                }
                else
                {
                    oLogonHeader.SlotNo = Convert.ToUInt16(slotNumber);
                }



                requestHeaderBytes = Converter.GetMessageInBytes(oLogonHeader, msgHeader);
                requestBodyBytes   = Converter.GetMessageInBytes(oModel, requestMsgBody);

                initializeBytes = new byte[msgRequestSize + msgHeaderSize];
                Array.Copy(requestHeaderBytes, 0, initializeBytes, 0, requestHeaderBytes.Length);
                Array.Copy(requestBodyBytes, 0, initializeBytes, requestHeaderBytes.Length, requestBodyBytes.Length);


                //MemoryManager.RequestDict.Add(slotNumber, initializeBytes);
                //MemoryManager.RequestQueue.Enqueue(initializeBytes);
                SendMessage(initializeBytes);
                MemoryManager.UpdateRequestReplyMappingMemory(slotNumber, false, true);
            }
            catch (Exception ex)
            {
                ExceptionUtility.LogError(ex);
            }
            finally
            {
                //timer.Interval = new TimeSpan(0, 0, 0, 0, 1);
                //timer.Tick += new EventHandler(InitializeSendMessageTicker);
                //timer.Start();
            }
        }
示例#4
0
 private void Client_OnMessageNew(object sender, MessagesMessage e)
 {
     _vkFileLogger.Debug("New message event: {@e}", e);
     OnMessage?.Invoke(sender, new BotEventArgs(e.Text, e.PeerId, e.FromId));
 }
示例#5
0
 public MessageEventArgs(VkClient <TUserStates> client, MessagesMessage message)
 {
     Message = new VkMessage <TUserStates>(client, message.UserId.Value, message.Body, message.Id.Value);
 }