示例#1
0
        public GdsDatabase()
        {
            this.connection = new GdsConnection();
            this.charset    = Charset.DefaultCharset;
            this.dialect    = 3;
            this.packetSize = 8192;

            GC.SuppressFinalize(this);
        }
示例#2
0
        public GdsEventManager(int handle, string ipAddress, int portNumber)
        {
            this.events = new Hashtable();
            this.events = Hashtable.Synchronized(this.events);
            this.handle = handle;

            // Initialize the connection
            if (this.connection == null)
            {
                this.connection = new GdsConnection();
                this.connection.Connect(ipAddress, portNumber);
            }
        }
		public GdsEventManager(int handle, string ipAddress, int portNumber)
		{
			this.events = new Hashtable();
			this.events = Hashtable.Synchronized(this.events);
			this.handle = handle;

			// Initialize the connection
			if (this.connection == null)
			{
				this.connection = new GdsConnection();
				this.connection.Connect(ipAddress, portNumber);
			}
		}
示例#4
0
        public void Detach()
        {
            lock (this)
            {
                if (this.TransactionCount > 0)
                {
                    throw new IscException(IscCodes.isc_open_trans, this.TransactionCount);
                }

                try
                {
                    this.Send.Write(IscCodes.op_detach);
                    this.Send.Write(this.handle);
                    this.Send.Flush();

                    this.ReadGenericResponse();

                    // Close the Event Manager
                    this.CloseEventManager();

                    // Close the connection	to the server
                    this.connection.Disconnect();

                    this.transactionCount = 0;
                    this.handle           = 0;
                    this.dialect          = 0;
                    this.packetSize       = 0;
                    this.charset          = null;
                    this.connection       = null;
                    this.serverVersion    = null;
                }
                catch (IOException)
                {
                    try
                    {
                        this.connection.Disconnect();
                    }
                    catch (IOException)
                    {
                        throw new IscException(IscCodes.isc_network_error);
                    }

                    throw new IscException(IscCodes.isc_network_error);
                }
            }
        }
示例#5
0
		public void Attach(ServiceParameterBuffer spb, string dataSource, int port, string service)
		{
			lock (this)
			{
				try
				{
					if (this.connection == null)
					{
						this.connection = new GdsConnection();
					}

					this.connection.Connect(dataSource, port, 8192, Charset.DefaultCharset);

					this.connection.Send.Write(IscCodes.op_service_attach);
					this.connection.Send.Write(0);
					this.connection.Send.Write(service);
					this.connection.Send.WriteBuffer(spb.ToArray());
					this.connection.Send.Flush();

					try
					{
						this.handle = this.connection.ReadGenericResponse().ObjectHandle;
					}
					catch (IscException)
					{
						try
						{
							this.Detach();
						}
						catch
						{
						}

						throw;
					}
				}
				catch (IOException)
				{
					this.connection.Disconnect();

					throw new IscException(IscCodes.isc_net_write_err);
				}
			}
		}
		public void Detach()
		{
			lock (this)
			{
				if (this.TransactionCount > 0)
				{
					throw new IscException(IscCodes.isc_open_trans, this.TransactionCount);
				}

				try
				{
					this.Send.Write(IscCodes.op_detach);
					this.Send.Write(this.handle);
					this.Send.Flush();

					this.ReadGenericResponse();

					// Close the Event Manager
					this.CloseEventManager();

					// Close the connection	to the server
					this.connection.Disconnect();

					this.transactionCount	= 0;
					this.handle				= 0;
					this.dialect			= 0;
					this.packetSize			= 0;
					this.charset			= null;
					this.connection			= null;
					this.serverVersion		= null;
				}
				catch (IOException)
				{
					try
					{
						this.connection.Disconnect();
					}
					catch (IOException)
					{
						throw new IscException(IscCodes.isc_network_error);
					}

					throw new IscException(IscCodes.isc_network_error);
				}
			}
		}
		private void Dispose(bool disposing)
		{
			lock (this)
			{
				if (!this.disposed)
				{
					try
					{
						// release any unmanaged resources
						this.Detach();

						// release any managed resources
						if (disposing)
						{
							this.connection		= null;
							this.charset		= null;
							this.eventManager	= null;
							this.serverVersion	= null;
							this.dialect		= 0;
							this.eventsId		= 0;
							this.handle			= 0;
							this.packetSize		= 0;
							this.warningMessage = null;
							this.transactionCount = 0;
						}
					}
					finally
					{
					}

					this.disposed = true;
				}
			}
		}
		public GdsDatabase()
		{
			this.connection		= new GdsConnection();
			this.charset		= Charset.DefaultCharset;
			this.dialect		= 3;
			this.packetSize		= 8192;

			GC.SuppressFinalize(this);
		}