Update of /cvsroot/pgsqlclient/pgsqlclient/PostgreSql.Data.PGSqlClient/source/NPGClient
In directory sc8-pr-cvs1:/tmp/cvs-serv32580
Modified Files:
PGDbClient.cs PGStatement.cs
Added Files:
PGClientMessageEventArgs.cs PGClientNotificationEventArgs.cs
Log Message:
* Improved PostgreSQL 3.0 protocol handling.
* Added some new files:
- PGInfoMessageEventArgs.cs
- PGNotificationEventArgs.cs
- PGClientMessageEventArgs.cs
- PGClientNotificationEventArgs.cs
* Added initial revision of asynchronous notification support ( task #82889 ).
* Added implementation of PGConnection.InfoMessage event ( task #82902 ).
--- NEW FILE: PGClientMessageEventArgs.cs ---
(This appears to be a binary file; contents omitted.)
--- NEW FILE: PGClientNotificationEventArgs.cs ---
(This appears to be a binary file; contents omitted.)
Index: PGDbClient.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient/PostgreSql.Data.PGSqlClient/source/NPGClient/PGDbClient.cs,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** PGDbClient.cs 17 Jul 2003 13:41:42 -0000 1.3
--- PGDbClient.cs 1 Aug 2003 17:51:58 -0000 1.4
***************
*** 29,32 ****
--- 29,39 ----
internal class PGDbClient
{
+ #region EVENTS
+
+ public event PGClientMessageEventHandler InfoMessage;
+ public event PGClientNotificationEventHandler Notification;
+
+ #endregion
+
#region STATIC_FIELDS
***************
*** 212,222 ****
}
! if (type == PGBackendCodes.ERROR_RESPONSE)
{
! // Read the error message and raise an exception
! PGClientException ex = processErrorPacket(responsePacket);
! throw ex;
! }
return responsePacket;
--- 219,250 ----
}
! switch (type)
{
! case PGBackendCodes.ERROR_RESPONSE:
! {
! // Read the error message and trow the exception
! PGClientException ex = processErrorPacket(responsePacket);
! throw ex;
! }
!
! case PGBackendCodes.NOTICE_RESPONSE:
! {
! // Read the notice message and raise an InfoMessage event
! PGClientException ex = processErrorPacket(responsePacket);
!
! this.InfoMessage(this, new PGClientMessageEventArgs(ex));
! }
! break;
!
! case PGBackendCodes.NOTIFICATION_RESPONSE:
! {
! processNotificationResponse(responsePacket);
! }
! break;
!
! default:
! break;
! }
return responsePacket;
***************
*** 378,381 ****
--- 406,419 ----
}
+ private void processNotificationResponse(PGResponsePacket packet)
+ {
+ int processID = packet.ReadInt();
+ string condition = packet.ReadNullString();
+ string additional = packet.ReadNullString();
+
+ // Raise an event as an InfoMessage
+ Notification(this, new PGClientNotificationEventArgs(processID, condition, additional));
+ }
+
#endregion
***************
*** 581,584 ****
--- 619,630 ----
#region METHODS
+
+ public void SendInfoMessage(PGClientException exception)
+ {
+ if (InfoMessage != null)
+ {
+ InfoMessage(this, new PGClientMessageEventArgs(exception));
+ }
+ }
public PGStatement CreateStatement()
Index: PGStatement.cs
===================================================================
RCS file: /cvsroot/pgsqlclient/pgsqlclient/PostgreSql.Data.PGSqlClient/source/NPGClient/PGStatement.cs,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -C2 -d -r1.1.1.1 -r1.2
*** PGStatement.cs 12 Jul 2003 08:11:23 -0000 1.1.1.1
--- PGStatement.cs 1 Aug 2003 17:51:58 -0000 1.2
***************
*** 344,360 ****
// Sync server and client
! db.Flush();
// Receive response
PGResponsePacket response = new PGResponsePacket();
! while (response.Message != PGBackendCodes.COMMAND_COMPLETE &&
! response.Message != PGBackendCodes.EMPTY_QUERY_RESPONSE &&
! response.Message != PGBackendCodes.NODATA &&
! response.Message != PGBackendCodes.PORTAL_SUSPENDED)
{
response = db.ReceiveResponsePacket();
processSqlPacket(response);
}
!
// Update status
this.status = PGStatementStatus.Executed;
--- 344,357 ----
// Sync server and client
! db.Sync();
// Receive response
PGResponsePacket response = new PGResponsePacket();
! while (response.Message != PGBackendCodes.READY_FOR_QUERY)
{
response = db.ReceiveResponsePacket();
processSqlPacket(response);
}
!
// Update status
this.status = PGStatementStatus.Executed;
***************
*** 637,646 ****
case "FETCH":
recordsAffected = Int32.Parse(elements[1]);
- break;
-
- case "CREATE":
- case "ALTER":
- case "DROP":
- db.Sync();
break;
}
--- 634,637 ----
|