[pgsqlclient-checkins] pgsqlclient/PostgreSql.Data.PGSqlClient/source/NPGClient PGClientMessageEvent
Status: Inactive
Brought to you by:
carlosga_fb
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 ---- |