* support-test-*.cs: Rename from test-*-p2.cs.
[mono.git] / mcs / class / Npgsql / Npgsql / NpgsqlBackEndKeyData.cs
1 // created on 11/6/2002 at 11:53
2
3 // Npgsql.NpgsqlBackEndKeyData.cs
4 //
5 // Author:
6 //      Francisco Jr. (fxjrlists@yahoo.com.br)
7 //
8 //      Copyright (C) 2002 The Npgsql Development Team
9 //      npgsql-general@gborg.postgresql.org
10 //      http://gborg.postgresql.org/project/npgsql/projdisplay.php
11 //
12
13 // This library is free software; you can redistribute it and/or
14 // modify it under the terms of the GNU Lesser General Public
15 // License as published by the Free Software Foundation; either
16 // version 2.1 of the License, or (at your option) any later version.
17 //
18 // This library is distributed in the hope that it will be useful,
19 // but WITHOUT ANY WARRANTY; without even the implied warranty of
20 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
21 // Lesser General Public License for more details.
22 //
23 // You should have received a copy of the GNU Lesser General Public
24 // License along with this library; if not, write to the Free Software
25 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
26
27
28 using System;
29 using System.IO;
30 using System.Text;
31 using System.Net;
32
33 namespace Npgsql
34 {
35     /// <summary>
36     /// This class represents a BackEndKeyData message received
37     /// from PostgreSQL
38     /// </summary>
39     internal sealed class NpgsqlBackEndKeyData
40     {
41         // Logging related values
42         private static readonly String CLASSNAME = "NpgsqlBackEndKeyData";
43
44         private Int32 _processId;
45         private Int32 _secretKey;
46
47         private ProtocolVersion _protocolVersion;
48
49         public NpgsqlBackEndKeyData(ProtocolVersion protocolVersion)
50         {
51             _protocolVersion = protocolVersion;
52             _processId = -1;
53             _secretKey = -1;
54         }
55
56
57         public void ReadFromStream(Stream inputStream)
58         {
59             NpgsqlEventLog.LogMethodEnter(LogLevel.Debug, CLASSNAME, CLASSNAME);
60
61             Byte[] inputBuffer = new Byte[8];
62
63             // Read the BackendKeyData message contents. Two Int32 integers = 8 Bytes.
64             // For protocol version 3.0 they are three integers. The first one is just the size of message
65             // so, just read it.
66             if (_protocolVersion >= ProtocolVersion.Version3)
67                 inputStream.Read(inputBuffer, 0, 4);
68
69             inputStream.Read(inputBuffer, 0, 8);
70             _processId = IPAddress.NetworkToHostOrder(BitConverter.ToInt32(inputBuffer, 0));
71             _secretKey = IPAddress.NetworkToHostOrder(BitConverter.ToInt32(inputBuffer, 4));
72
73         }
74
75         public Int32 ProcessID
76         {
77             get
78             {
79                 NpgsqlEventLog.LogPropertyGet(LogLevel.Debug, CLASSNAME, "ProcessID");
80                 return _processId;
81             }
82         }
83
84         public Int32 SecretKey
85         {
86             get
87             {
88                 NpgsqlEventLog.LogPropertyGet(LogLevel.Debug, CLASSNAME, "SecretKey");
89                 return _secretKey;
90             }
91         }
92     }
93 }