/// <summary>Sessionサイズ測定</summary> /// <returns>Sessionサイズ(KB)</returns> /// <remarks>シリアル化できないオブジェクトを含む場合は落ちる。</remarks> public static long CalculateSessionSizeKB() { return(PubCmnFunction.CalculateSessionSize() / 1000); }
/// <summary>プロパティ文字列からプロパティ名・値の組を取得</summary> /// <param name="propString">プロパティ文字列</param> /// <returns>プロパティ名・値(ディクショナリ)</returns> /// <remarks> /// プロパティ文字列のフォーマット /// [property=value[;property=value]] /// /// [ property ]、[ value ]に[ = ]、[ ; ]が混じる場合は、 /// { }で囲い( {=}、{;} )エスケープできる。 /// ただし、{ }のエスケープはできない。 /// ※ 特殊文字は、=、;、{、} /// </remarks> public static Dictionary <string, string> GetPropsFromPropString(string propString) { // ディクショナリ Dictionary <string, string> ht = new Dictionary <string, string>(); // ストリング ビルダ StringBuilder sb = new StringBuilder(); // プロパティ名・値 string propName = ""; string propValue = ""; // ステータス bool isFirst = true; bool isMidPtHead = false; bool isInMidPt = false; bool isMidPtFoot = false; bool isInPropName = false; bool isInPropValue = false; foreach (char ch in propString) { if (isFirst) { // 先頭 // 先頭終わり isFirst = false; // プロパティ開始 isInPropName = true; isInPropValue = false; if (ch == '=' || ch == ';' || ch == '}') { // エラー PubCmnFunction.ThrowPropStringFormatException( PublicExceptionMessage.PROP_STRING_FORMAT_ERROR_START_CHARACTER); } else if (ch == '{') { // 中括弧開始 isMidPtHead = true; isInMidPt = false; isMidPtFoot = false; } else { // 追加 sb.Append(ch); } } else { // 先頭後 if (isMidPtHead) { if (ch == '=' || ch == ';') { // 中括弧中 isMidPtHead = false; isInMidPt = true; isMidPtFoot = false; // 追加 sb.Append(ch); } else { // エラー PubCmnFunction.ThrowPropStringFormatException(String.Format( PublicExceptionMessage.PROP_STRING_FORMAT_ERROR_ESCAPE_CHARACTER, ch)); } } else if (isInMidPt) { if (ch == '}') { // 中括弧後 isMidPtHead = false; isInMidPt = false; isMidPtFoot = true; } else { // エラー PubCmnFunction.ThrowPropStringFormatException( PublicExceptionMessage.PROP_STRING_FORMAT_ERROR_CURLY_BRACE + "-1"); } } else { // 中括弧外になった if (isMidPtFoot) { // 初期化 isMidPtHead = false; isInMidPt = false; isMidPtFoot = false; } // 中括弧外 if (ch == '{') { // 中括弧開始 isMidPtHead = true; isInMidPt = false; isMidPtFoot = false; } if (ch == '}') { // エラー PubCmnFunction.ThrowPropStringFormatException( PublicExceptionMessage.PROP_STRING_FORMAT_ERROR_CURLY_BRACE + "-2"); } else if (ch == '=') { // プロパティ名の終わり if (isInPropName) { if (sb.ToString() == "") { // エラー PubCmnFunction.ThrowPropStringFormatException( PublicExceptionMessage.PROP_STRING_FORMAT_ERROR_PROPERTY_NAME_IS_EMPTY); } else { // プロパティ名が在 propName = sb.ToString(); // ストリング ビルダのクリア sb = new StringBuilder(); // 状態変更 isInPropName = false; isInPropValue = true; } } else { // エラー PubCmnFunction.ThrowPropStringFormatException( PublicExceptionMessage.PROP_STRING_FORMAT_ERROR_DELIMITER_OF_PROPERTY_VALUE); } } else if (ch == ';') { // プロパティ値の終わり if (isInPropValue) { if (sb.ToString() == "") { // エラー PubCmnFunction.ThrowPropStringFormatException( PublicExceptionMessage.PROP_STRING_FORMAT_ERROR_PROPERTY_VALUE_IS_EMPTY); } else { // プロパティ値が在 propValue = sb.ToString(); // ストリング ビルダのクリア sb = new StringBuilder(); // 状態変更 isInPropName = true; isInPropValue = false; } } else { // エラー PubCmnFunction.ThrowPropStringFormatException( PublicExceptionMessage.PROP_STRING_FORMAT_ERROR_DELIMITER_OF_PROPERTY_NAME); } } else { // 追加 sb.Append(ch); } // 両方に値が入った if (propName != "" && propValue != "") { // 重複していたら上書きという仕様 ht[propName.ToUpper()] = propValue; // #33-この行 // 値をクリアする。 propName = ""; propValue = ""; } } } } // プロパティ値の終わり if (isInPropValue) { if (sb.ToString() == "") { // プロパティ値が空 // エラー } else { // プロパティ値が在 propValue = sb.ToString(); // ストリング ビルダのクリア sb = new StringBuilder(); // 状態変更 isInPropName = true; isInPropValue = false; } } else { //// エラー //Form1.ThrowPropStringFormatException("6"); // → 最後が;で終わっている場合が有るので、エラーを上げない。 } // 両方に値が入った if (propName != "" && propValue != "") { // 重複していたら上書きという仕様 ht[propName.ToUpper()] = propValue; // #33-この行 // 値をクリアする。 propName = ""; propValue = ""; } return(ht); }
public void Initialize() { //New instance of Pub Cmn Function _pubCmnFunction = new PubCmnFunction(); }