[Ttssh2-commit] [5395] チケット #32144 ログ採取開始時の現在バッファをあらかじめ含める

svnno****@sourc***** svnno****@sourc*****
2013年 9月 30日 (月) 18:47:11 JST


Revision: 5395
          http://sourceforge.jp/projects/ttssh2/scm/svn/commits/5395
Author:   yutakapon
Date:     2013-09-30 18:47:11 +0900 (Mon, 30 Sep 2013)
Log Message:
-----------
チケット #32144  ログ採取開始時の現在バッファをあらかじめ含める

コードのブラッシュアップ。

最初の書き出し先がネットワーク経由だと、書き出し処理で時間がかかってしまうことが
予想されるため、遅延書き込みのしくみを取り入れてみたが、むしろ余計にスローダウンと
なってしまった。

バッファの内容を cv.LogBuf に格納してから、LogToFile()を呼ぶことも考えたが、
サーバから受信していないも関わらず、受信バイト数がカウントアップするのがいまいちなのと、
cv.LogBufのサイズが 1KB しかないので、バッファが1KBを超えているときの処理が複雑に
なるため、とりあえず現状のままとする。

Ticket Links:
------------
    http://sourceforge.jp/projects/ttssh2/tracker/detail/32144

Modified Paths:
--------------
    trunk/teraterm/teraterm/filesys.cpp

-------------- next part --------------
Modified: trunk/teraterm/teraterm/filesys.cpp
===================================================================
--- trunk/teraterm/teraterm/filesys.cpp	2013-09-29 16:00:21 UTC (rev 5394)
+++ trunk/teraterm/teraterm/filesys.cpp	2013-09-30 09:47:11 UTC (rev 5395)
@@ -442,6 +442,8 @@
 	unsigned tid;
 	DWORD ofs, size, written_size;
 	char buf[512];
+	const char *crlf = "\r\n";
+	DWORD crlf_len = 2;
 
 	if ((FileLog) || (BinLog)) return FALSE;
 
@@ -641,11 +643,26 @@
 	// (2013.9.29 yutaka)
 	if (ts.LogAllBuffIncludedInFirst) {
 		for (ofs = 0 ;  ; ofs++ ) {
+			// 1\x82‚̍s\x82\xF0\x8E擾\x82\xB7\x82\xE9\x81B\x95\xB6\x8E\x9A\x82\xBE\x82\xAF\x82Ȃ̂ŁA\x83G\x83X\x83P\x81[\x83v\x83V\x81[\x83P\x83\x93\x83X\x82͊܂܂\xEA\x82Ȃ\xA2\x81B
 			size = BuffGetAnyLineData(ofs, buf, sizeof(buf));
 			if (size == -1)
 				break;
-			WriteFile((HANDLE)LogVar->FileHandle, buf, size, &written_size, NULL);
-			WriteFile((HANDLE)LogVar->FileHandle, "\r\n", 2, &written_size, NULL);
+
+#if 0
+			if (ts.DeferredLogWriteMode) { // \x92x\x89\x84\x8F\x91\x82\xAB\x8D\x9E\x82\xDD
+				char *pbuf = (char *)malloc(size + 2);
+				memcpy(pbuf, buf, size);
+				pbuf[size] = '\r';
+				pbuf[size+1] = '\n';
+				Sleep(1);  // \x83X\x83\x8C\x83b\x83h\x83L\x83\x85\x81[\x82\xAA\x8D\xEC\x82\xE7\x82\xEA\x82\xE9\x82悤\x82ɁA\x83R\x83\x93\x83e\x83L\x83X\x83g\x83X\x83C\x83b\x83`\x82𑣂\xB7\x81B
+				PostThreadMessage(LogVar->LogThreadId, WM_DPC_LOGTHREAD_SEND, (WPARAM)pbuf, size + 2);
+			} else { // \x92\xBC\x8F\x91\x82\xAB\x81B\x83l\x83b\x83g\x83\x8F\x81[\x83N\x8Co\x97R\x82\xBE\x82ƒx\x82\xA2\x81B
+#endif
+				WriteFile((HANDLE)LogVar->FileHandle, buf, size, &written_size, NULL);
+				WriteFile((HANDLE)LogVar->FileHandle, crlf, crlf_len, &written_size, NULL);
+#if 0
+			}
+#endif
 		}
 	}
 



Ttssh2-commit メーリングリストの案内