Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 0.8, 0.8.1, and 0.8.2

shellext: refactor Thgstatus

add new static private SendRequest()

Changeset a38a9c7d18fa

Parent 66f6add7322d

by Adrian Buehlmann

Changes to 2 files · Browse files at a38a9c7d18fa Showing diff from parent 66f6add7322d Diff from another changeset...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 
37
38
39
 
 
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
36
37
 
 
38
39
40
41
42
43
44
 
 
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
   // Copyright (C) 2009 Adrian Buehlmann  //  // This program is free software: you can redistribute it and/or modify  // it under the terms of the GNU General Public License as published by  // the Free Software Foundation, either version 2 of the License, or  // (at your option) any later version.  //  // This program is distributed in the hope that it will be useful,  // but WITHOUT ANY WARRANTY; without even the implied warranty of  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the  // GNU General Public License for more details.  //  // You should have received a copy of the GNU General Public License  // along with this program. If not, see <http://www.gnu.org/licenses/>.    #include "stdafx.h"    #include "Thgstatus.h"    #include <vector>      std::string GetPipeName()  {   DWORD size = 260;   std::vector<char> buf(size);   if (!::GetUserNameA(&buf[0], &size))   return "";   std::string res = "\\\\.\\pipe\\TortoiseHgRpcServer-bc0c27107423-";   res += &buf[0];   return res;  }     -int Thgstatus::update(const std::string& path) +int Thgstatus::SendRequest(const std::string& request)  { - static std::string pname = GetPipeName(); - + static const std::string pname = GetPipeName(); +   if (pname.empty())   return 0;     BOOL fSuccess;   DWORD cbRead; - - const std::string request = "update|" + path;     TDEBUG_TRACE("Thgstatus::update: sending '" << request << "' to " << pname);     fSuccess = ::CallNamedPipeA(   pname.c_str(), (void*)request.c_str(), request.size(), 0, 0, &cbRead,   200 /* ms */   );     DWORD err = GetLastError();   if (fSuccess || err == ERROR_MORE_DATA || err == ERROR_PIPE_NOT_CONNECTED)   {   return 0;   }   else if (err == ERROR_PIPE_BUSY)   {   TDEBUG_TRACE("Thgstatus::update: CallNamedPipeA failed. "   "ERROR_PIPE_BUSY");   return -1;   }   else   {   TDEBUG_TRACE("Thgstatus::update: CallNamedPipeA failed ("   << err << ")");   return -1;   }  }
 
21
22
23
 
 
24
25
 
 
 
26
27
28
 
21
22
23
24
25
26
 
27
28
29
30
31
32
@@ -21,8 +21,12 @@
   class Thgstatus  { + static int SendRequest(const std::string& request); +  public: - static int update(const std::string& path); + static int update(const std::string& path) { + return SendRequest("update|" + path); + }  };    #endif