void TransparentTransmissionBuffer::_InsertTransmissionPeriod(shared_ptr<ByteBuffer> pBuffer) { // All . which are placed as the first character on a new // line should be replaced with .. // Allocate maximum required length for the out buffer. char *pInBuffer = (char*) pBuffer->GetCharBuffer(); char *pOutBuffer = new char[pBuffer->GetSize() * 2]; char *pOutBufferStart = pOutBuffer; int iInBufferSize = pBuffer->GetSize(); for (int i = 0; i < iInBufferSize; i++) { char c = pInBuffer[i]; if (c == '.') { if (i == 0) { *pOutBuffer = '.'; pOutBuffer++; } else if (i > 2 && pInBuffer[i-1] == '\n') { *pOutBuffer = '.'; pOutBuffer++; } } // Add the character *pOutBuffer = c; pOutBuffer++; } // Clear the buffer and insert the new data int iOutBufferLen = pOutBuffer - pOutBufferStart; pBuffer->Empty(); pBuffer->Add((BYTE*) pOutBufferStart, iOutBufferLen); // Free memory for the old buffer delete [] pOutBufferStart; }
void TransparentTransmissionBuffer::_RemoveTransmissionPeriod(shared_ptr<ByteBuffer> pBuffer) { // Allocate maximum required length for the out buffer. char *pInBuffer = (char*) pBuffer->GetCharBuffer(); char *pOutBuffer = new char[pBuffer->GetSize()]; char *pOutBufferStart = pOutBuffer; int iInBufferSize = pBuffer->GetSize(); for (int i = 0; i < iInBufferSize; i++) { char c = pInBuffer[i]; if (c == '.') { if (i == 0) continue; else if (i > 2 && pInBuffer[i-1] == '\n') continue; } // Add the character to the out buffer *pOutBuffer = c; pOutBuffer++; } // Clear the buffer and insert the new data int iOutBufferLen = pOutBuffer - pOutBufferStart; pBuffer->Empty(); pBuffer->Add((BYTE*) pOutBufferStart, iOutBufferLen); // Free memory for the old buffer delete [] pOutBufferStart; }