Пример #1
0
        /// <summary>
        /// 发送数据
        /// </summary>
        /// <param name="session"></param>
        /// <param name="segment"></param>
        internal void SendData(ChatSession session, ArraySegment <byte> segment)
        {
            try
            {
                int count            = segment.Count;
                int maxRequestLength = AppConfiger.AppCfg.CurrCC_Cfg.MaxRequestLength;
                if (count > maxRequestLength)
                {
                    int offset = 0;
                    while (offset < count)
                    {
                        session.Send(segment.Array, offset, Math.Min(maxRequestLength, count - offset));

                        offset += maxRequestLength;
                    }
                }
                else
                {
                    session.Send(segment);
                }
            }
            catch (Exception ex)
            {
                var json = new JsonDict();
                json.Add("SessionID", session.SessionID);
                json.Add("Msg", string.Format("{0} 发送数据异常,异常信息:{1}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), ex.Message));
                ArraySegmentWrapper segmentWrapper = new ArraySegmentWrapper(Constants.ERROR_RESPONSE_KEY, json.ToBytes());
                session.Send(segmentWrapper.Wrapper());
            }
        }
Пример #2
0
        public void UploadAvatar(long userId, string extName, byte[] data)
        {
            var json = new JsonDict();

            json.AddLong("UserId", userId);
            json.Add("ExtName", extName);
            json.Add("Data", Convert.ToBase64String(data));

            ArraySegmentWrapper segmentWrapper = new ArraySegmentWrapper(Constants.UPLOAD_AVATAR_REQUEST_KEY, JConverter.SerializeToBytes(json));

            this.Send(segmentWrapper);
        }
Пример #3
0
        public void Talk(TalkReq req)
        {
            var json = new JsonDict();

            json.Add("FromUId", req.FromUId);
            json.Add("ToUId", req.ToUId);
            json.Add("Content", req.Content);

            ArraySegmentWrapper segmentWrapper = new ArraySegmentWrapper(Constants.TALK_REQUEST_KEY, json.ToBytes());

            this.Send(segmentWrapper);
        }
Пример #4
0
        protected override void HandleException(Exception ex)
        {
            this.Logger.ErrorFormat("应用程序异常: {0}", ex.Message);

            var json = new JsonDict();

            json.Add("SessionID", this.SessionID);
            json.Add("Msg", string.Format("{0} 应用程序异常,异常信息:{1}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), ex.Message));
            ArraySegmentWrapper segmentWrapper = new ArraySegmentWrapper(Constants.ERROR_RESPONSE_KEY, json.ToBytes());

            this.SendData(this, segmentWrapper.Wrapper());
        }
Пример #5
0
        /// <summary>
        /// 提醒上线
        /// </summary>
        /// <param name="sessionId"></param>
        /// <param name="userName"></param>
        internal void NotifyOnline(string sessionId, string userName)
        {
            var ss = AppServer.GetSessions(o => !o.SessionID.Equals(sessionId));

            ss.AsParallel().ForAll(s =>
            {
                var json = new JsonDict();
                json.Add("SessionID", sessionId);
                json.Add("UserName", userName);
                json.Add("Msg", string.Format("{0} 客户端上线", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")));
                ArraySegmentWrapper segmentWrapper = new ArraySegmentWrapper(Constants.NOTIFY_ONLINE_RESPONSE_KEY, json.ToBytes());

                this.SendData(s, segmentWrapper.Wrapper());
            });
        }
Пример #6
0
        public override HttpResponse Handle(HttpRequest req)
        {
            if (req.Headers.ContainsKey("SIMPLEDBADD"))
            {
                if (req.Headers["SIMPLEDBADD"] == "TRUE")
                {
                    count++;
                }
            }

            if (req.Headers.ContainsKey("SIMPLEDBSUB"))
            {
                if (req.Headers["SIMPLEDBSUB"] == "TRUE")
                {
                    count--;
                }
            }
            if (count < 0)
            {
                count = 0;
            }

            var dict = new JsonDict();

            dict.Add("Count", JsonNumber.Create(count));
            return(HttpResponse.Json(dict));
        }
Пример #7
0
        public static HairStyle CreateFromSavedJson(JSONNode aJson)
        {
            HairStyle newHair = null;

            if (aJson["savedByPlugin"].Value == HairStylist.pluginName)
            {
                newHair = new HairStyle();

                foreach (JSONClass storableNode in aJson["storables"].AsArray)
                {
                    string   saveGroup = storableNode["storableName"];
                    JsonDict groupDict = new JsonDict();
                    foreach (JSONClass paramNode in storableNode["params"].AsArray)
                    {
                        groupDict.Add(paramNode["id"], paramNode.AsObject);
                    }
                    newHair._savedJson[saveGroup] = groupDict;
                }
            }
            else
            {
                SuperController.LogError("Saved file was not created by HairStylist");
            }
            return(newHair);
        }
Пример #8
0
        /// <summary>
        ///     Provides the handler for AJAX calls. Pass this to a <see cref="UrlMapping"/>.</summary>
        /// <param name="req">
        ///     The incoming HTTP POST request to be handled, containing the API function name and parameters.</param>
        /// <param name="api">
        ///     The API object on which the API function is to be invoked.</param>
        public HttpResponse Handle(HttpRequest req, TApi api)
        {
            if (_options == AjaxHandlerOptions.PropagateExceptions)
            {
                return(callApiFunction(req, api));
            }

            try
            {
                return(callApiFunction(req, api));
            }
            catch (Exception e)
            {
                while (e is TargetInvocationException)
                {
                    e = e.InnerException;
                }

                var error = new JsonDict {
                    { "status", "error" }
                };
                if (_options == AjaxHandlerOptions.ReturnExceptionsWithMessages)
                {
                    error.Add("message", "{0} ({1})".Fmt(e.Message, e.GetType().Name));
                }
                return(HttpResponse.Json(error));
            }
        }
Пример #9
0
        public void SearchUser(string account)
        {
            var json = new JsonDict();

            json.Add("Account", account);

            ArraySegmentWrapper segmentWrapper = new ArraySegmentWrapper(Constants.SEARCH_USER_REQUEST_KEY, json.ToBytes());

            this.Send(segmentWrapper);
        }
Пример #10
0
        public void SaveContacts(long oUserId, long cUserId, string customName)
        {
            var json = new JsonDict();

            json.AddLong("OUserId", oUserId);
            json.AddLong("CUserId", cUserId);
            json.Add("CustomName", customName);

            ArraySegmentWrapper segmentWrapper = new ArraySegmentWrapper(Constants.SAVE_CONTACTS_REQUEST_KEY, json.ToBytes());

            this.Send(segmentWrapper);
        }
        public IActionResult SaveQuery([FromBody] JsonDict jsonDict)
        {
            var queryDict = jsonDict["query"] as JsonDict;
            var queryName = jsonDict["queryName"].ToString();

            eqService.SaveQueryDict(queryDict, queryName);

            JsonDict dict = new JsonDict();

            dict.Add("result", "OK");
            return(Json(dict));
        }
Пример #12
0
        public void GetContacts(long oUserId, string keyword, int pageNum, int pageSize)
        {
            var json = new JsonDict();

            json.AddLong("OUserId", oUserId);
            json.Add("Keyword", keyword);
            json.AddInt("PageNum", pageNum);
            json.AddInt("PageSize", pageSize);

            ArraySegmentWrapper segmentWrapper = new ArraySegmentWrapper(Constants.GET_CONTACTS_REQUEST_KEY, json.ToBytes());

            this.Send(segmentWrapper);
        }
Пример #13
0
        private JsonValue readJsonValueFormat0(Stream stream, ChunkState state)
        {
            byte type = (byte)stream.ReadByte();

            if (type == 0)
            {
                return(null);
            }
            else if (type == 1)
            {
                return(false);
            }
            else if (type == 2)
            {
                return(true);
            }
            else if (type == 3)
            {
                return(stream.ReadInt64Optim());
            }
            else if (type == 4)
            {
                return(stream.ReadUInt64Optim());
            }
            else if (type == 5)
            {
                return(BitConverter.ToDouble(stream.Read(8), 0));
            }
            else if (type >= _stringCodeFirst && type <= _stringCodeLast)
            {
                var str = stream.Read(readLength(stream, type, _stringCodeFirst, _stringCodeLast)).FromUtf8();
                return(str);
            }
            else if (type >= _listCodeFirst && type <= _listCodeLast)
            {
                var count  = readLength(stream, type, _listCodeFirst, _listCodeLast);
                var result = new JsonList();
                for (int i = 0; i < count; i++)
                {
                    result.Add(readJsonValueFormat0(stream, state));
                }
                return(result);
            }
            else if (type >= _dictCodeFirst && type <= _dictCodeLast)
            {
                var count  = readLength(stream, type, _dictCodeFirst, _dictCodeLast);
                var result = new JsonDict();
                for (int i = 0; i < count; i++)
                {
                    byte   keyType = (byte)stream.ReadByte();
                    string key;
                    if (keyType == 255)
                    {
                        key = state.PropNames[(int)stream.ReadUInt32Optim()];
                    }
                    else
                    {
                        key = stream.Read(readLength(stream, keyType, 0, 254)).FromUtf8();
                        // state.PropNameIds.Add(key, state.PropNameIds.Count); - only needed for writing, which never shares state with reading so might as well not bother to update this one
                        state.PropNames.Add(key);
                    }
                    result.Add(key, readJsonValueFormat0(stream, state));
                }
                return(result);
            }
            else
            {
                throw new Exception();
            }
        }