//TODO: handleSSPFollowerRequest
        public async Task <AddSSPFollowerResponse> AddSSPFollower(
            AddSSPFollowerRequest ptr, CancellationToken cancellationToken)
        {
            AddSSPFollowerResponse ptrResp = null;

            m_ptrLogger.LogOk("START");

            if (ptr._dataTransMode == DT_TRANS_ADD)
            {
                await _followerService.InsertSSPFollower(ptr._sspfollower, cancellationToken);

                bool ret = true;
                ptrResp                = new AddSSPFollowerResponse(); //MT_AddSSPFollowerResponse_ID
                ptrResp._retCode       = ret == true ? RC_OK : RC_ERROR;
                ptrResp._dataTransMode = ptr._dataTransMode;
                CppHelper.memcpy(ref ptrResp._sspfollower, ptr._sspfollower);
                //SentDataUsingSocketID(ptrResp, MT_AddSSPFollowerResponse_ID, ptr._header._socketID);
                if (ret)
                {
                    //await AddFollowerAsync(ptr._sspfollower._sspMT4Login, ptr._sspfollower._followerMT4Login,
                    //    ptr._sspfollower._followerMT4ServerIndex, cancellationToken);
                    //await AddFollowerVolumeAsync(ptr._sspfollower._sspSignalIndex,
                    //    ptr._sspfollower._followerMT4ServerIndex, ptr._sspfollower._followerMT4Login,
                    //    ptr._sspfollower._followervolume, cancellationToken);

                    m_ptrLogger.LogInfo(
                        "SSP follower added. Follower master login: %d SSP master login : %d SignalIndex: %d",
                        ptr._sspfollower._followerMasterLogin, ptr._sspfollower._sspMasterLogin, ptr._sspfollower._sspSignalIndex);
                }
                else
                {
                    m_ptrLogger.LogError(
                        "Unable to add SSP follower. Follower master login: %d SSP master login : %d SignalIndex: %d",
                        ptr._sspfollower._followerMasterLogin, ptr._sspfollower._sspMasterLogin, ptr._sspfollower._sspSignalIndex);
                }
            }
            else if (ptr._dataTransMode == DT_TRANS_MODIFY)
            {
                await _followerService.ModifySSPFollower(ptr._sspfollower, cancellationToken);

                bool ret = true;
                ptrResp                = new AddSSPFollowerResponse(); // MT_AddSSPFollowerResponse_ID
                ptrResp._retCode       = ret == true ? RC_OK : RC_ERROR;
                ptrResp._dataTransMode = ptr._dataTransMode;
                CppHelper.memcpy(ref ptrResp._sspfollower, ptr._sspfollower);
                //SentDataUsingSocketID(ptrResp, MT_AddSSPFollowerResponse_ID, ptr._header._socketID);
                if (ret)
                {
                    //await UpdateFollowerVolumeAsync(ptr._sspfollower._sspSignalIndex, ptr._sspfollower._followerMT4ServerIndex,
                    //    ptr._sspfollower._followerMT4Login, ptr._sspfollower._followervolume, cancellationToken);

                    m_ptrLogger.LogInfo(
                        "SSP follower modified. Follower master login: %d SSP master login : %d SignalIndex: %d",
                        ptr._sspfollower._followerMasterLogin, ptr._sspfollower._sspMasterLogin, ptr._sspfollower._sspSignalIndex);
                }
                else
                {
                    m_ptrLogger.LogError(
                        "Unable to modify SSP follower. Follower master login: %d SSP master login : %d SignalIndex: %d",
                        ptr._sspfollower._followerMasterLogin, ptr._sspfollower._sspMasterLogin, ptr._sspfollower._sspSignalIndex);
                }
            }
            else if (ptr._dataTransMode == DT_TRANS_DELETE)
            {
                await _followerService.DeleteSSPFollower(ptr._sspfollower, cancellationToken);

                bool ret = true;
                ptrResp                = new AddSSPFollowerResponse(); // MT_AddSSPFollowerResponse_ID
                ptrResp._retCode       = ret == true ? RC_OK : RC_ERROR;
                ptrResp._dataTransMode = ptr._dataTransMode;
                CppHelper.memcpy(ref ptrResp._sspfollower, ptr._sspfollower);
                //SentDataUsingSocketID(ptrResp, MT_AddSSPFollowerResponse_ID, ptr._header._socketID);
                if (ret)
                {
                    //await RemoveFollowerAsync(ptr._sspfollower._sspMT4Login,
                    //    ptr._sspfollower._followerMT4Login,
                    //    ptr._sspfollower._followerMT4ServerIndex, cancellationToken);
                    //await RemoveFollowerVolumeAsync(ptr._sspfollower._sspSignalIndex,
                    //    ptr._sspfollower._followerMT4ServerIndex, ptr._sspfollower._followerMT4Login,
                    //    ptr._sspfollower._followervolume, cancellationToken);

                    m_ptrLogger.LogInfo(
                        "SSP follower deleted. Follower master login: %d SSP master login : %d SignalIndex: %d",
                        ptr._sspfollower._followerMasterLogin, ptr._sspfollower._sspMasterLogin, ptr._sspfollower._sspSignalIndex);
                }
                else
                {
                    m_ptrLogger.LogError(
                        "Unable to delete SSP follower. Follower master login: %d SSP master login : %d SignalIndex: %d",
                        ptr._sspfollower._followerMasterLogin, ptr._sspfollower._sspMasterLogin, ptr._sspfollower._sspSignalIndex);
                }
            }

            m_ptrLogger.LogOk("END");
            return(ptrResp);
        }