Optimize SOL logic according to SOL Configuration Parameters definition

Issue without this patch:
ipmi sol is always slower than web sol and system output.

Defined in ipmi spec:
Byte 2: Character Send Threshold. 1-based. The BMC will automatically
send an SOL character data packet containing this number of characters
as soon as this number of characters(or greater) has been accepted from
the baseboard serial controller into the BMC.

Tested:
1. ipmitool -I lanplus -H <BMC IP> -U <user> -P <pwd> sol activate
2. ipmi sol output is consistent with system output.

Signed-off-by: Tang Yiwei <tangyiwei.2022@bytedance.com>
Change-Id: I097e5f4bf7ff224a90505dcb69cd59039a297e08
diff --git a/sol/sol_context.cpp b/sol/sol_context.cpp
index 08a717a..7bae1cb 100644
--- a/sol/sol_context.cpp
+++ b/sol/sol_context.cpp
@@ -40,8 +40,15 @@
 {
     // fetch the timeout from the SOL manager
     std::chrono::microseconds interval = sol::Manager::get().accumulateInterval;
+
     if (enable)
     {
+        auto bufferSize = sol::Manager::get().dataBuffer.size();
+        if (bufferSize > sendThreshold)
+        {
+            charAccTimerHandler();
+            return;
+        }
         accumulateTimer.expires_after(interval);
         std::weak_ptr<Context> weakRef = weak_from_this();
         accumulateTimer.async_wait(