mirror of
https://github.com/FirebirdSQL/firebird.git
synced 2025-01-22 16:43:03 +01:00
ipserver is being deleted. Update build files.
This commit is contained in:
parent
a8d0f250ed
commit
c5543b4358
@ -738,7 +738,6 @@
|
||||
F616C4490200B0CF01EF0ADE,
|
||||
F616C4670200B0CF01EF0ADE,
|
||||
F616C4920200B0CF01EF0ADE,
|
||||
F616C5230200B0CF01EF0ADE,
|
||||
F616C53A0200B0CF01EF0ADE,
|
||||
F616C55E0200B0CF01EF0ADE,
|
||||
F616C6FC0200B0D001EF0ADE,
|
||||
@ -3143,85 +3142,6 @@
|
||||
path = undef.h;
|
||||
refType = 4;
|
||||
};
|
||||
F616C5230200B0CF01EF0ADE = {
|
||||
children = (
|
||||
F616C5240200B0CF01EF0ADE,
|
||||
F616C5250200B0CF01EF0ADE,
|
||||
F616C5260200B0CF01EF0ADE,
|
||||
F616C5270200B0CF01EF0ADE,
|
||||
F616C5280200B0CF01EF0ADE,
|
||||
F616C5290200B0CF01EF0ADE,
|
||||
F616C52A0200B0CF01EF0ADE,
|
||||
F616C52B0200B0CF01EF0ADE,
|
||||
F616C52C0200B0CF01EF0ADE,
|
||||
F616C52D0200B0CF01EF0ADE,
|
||||
F616C52E0200B0CF01EF0ADE,
|
||||
F616C52F0200B0CF01EF0ADE,
|
||||
);
|
||||
isa = PBXGroup;
|
||||
path = ipserver;
|
||||
refType = 4;
|
||||
};
|
||||
F616C5240200B0CF01EF0ADE = {
|
||||
isa = PBXFileReference;
|
||||
path = alli.cpp;
|
||||
refType = 4;
|
||||
};
|
||||
F616C5250200B0CF01EF0ADE = {
|
||||
isa = PBXFileReference;
|
||||
path = alli_proto.h;
|
||||
refType = 4;
|
||||
};
|
||||
F616C5260200B0CF01EF0ADE = {
|
||||
isa = PBXFileReference;
|
||||
path = blk.h;
|
||||
refType = 4;
|
||||
};
|
||||
F616C5270200B0CF01EF0ADE = {
|
||||
isa = PBXFileReference;
|
||||
path = ipapi_proto.h;
|
||||
refType = 4;
|
||||
};
|
||||
F616C5280200B0CF01EF0ADE = {
|
||||
isa = PBXFileReference;
|
||||
path = ipc.h;
|
||||
refType = 4;
|
||||
};
|
||||
F616C5290200B0CF01EF0ADE = {
|
||||
isa = PBXFileReference;
|
||||
path = ipcevent.cpp;
|
||||
refType = 4;
|
||||
};
|
||||
F616C52A0200B0CF01EF0ADE = {
|
||||
isa = PBXFileReference;
|
||||
path = ipcli_proto.h;
|
||||
refType = 4;
|
||||
};
|
||||
F616C52B0200B0CF01EF0ADE = {
|
||||
isa = PBXFileReference;
|
||||
path = ipclient.cpp;
|
||||
refType = 4;
|
||||
};
|
||||
F616C52C0200B0CF01EF0ADE = {
|
||||
isa = PBXFileReference;
|
||||
path = ipevt_proto.h;
|
||||
refType = 4;
|
||||
};
|
||||
F616C52D0200B0CF01EF0ADE = {
|
||||
isa = PBXFileReference;
|
||||
path = ips.h;
|
||||
refType = 4;
|
||||
};
|
||||
F616C52E0200B0CF01EF0ADE = {
|
||||
isa = PBXFileReference;
|
||||
path = ipserver.cpp;
|
||||
refType = 4;
|
||||
};
|
||||
F616C52F0200B0CF01EF0ADE = {
|
||||
isa = PBXFileReference;
|
||||
path = ipsrv_proto.h;
|
||||
refType = 4;
|
||||
};
|
||||
F616C53A0200B0CF01EF0ADE = {
|
||||
children = (
|
||||
F616C53C0200B0CF01EF0ADE,
|
||||
@ -6710,26 +6630,6 @@
|
||||
path = interface.cpp;
|
||||
refType = 4;
|
||||
};
|
||||
F616C8810200B0D001EF0ADE = {
|
||||
isa = PBXFileReference;
|
||||
path = ipc.cpp;
|
||||
refType = 4;
|
||||
};
|
||||
F616C8820200B0D001EF0ADE = {
|
||||
isa = PBXFileReference;
|
||||
path = ipc.h;
|
||||
refType = 4;
|
||||
};
|
||||
F616C8830200B0D001EF0ADE = {
|
||||
isa = PBXFileReference;
|
||||
path = ipc_proto.h;
|
||||
refType = 4;
|
||||
};
|
||||
F616C8840200B0D001EF0ADE = {
|
||||
isa = PBXFileReference;
|
||||
path = ipc_server.cpp;
|
||||
refType = 4;
|
||||
};
|
||||
F616C8850200B0D001EF0ADE = {
|
||||
isa = PBXFileReference;
|
||||
path = isc_tcpent.mar;
|
||||
|
@ -19,10 +19,6 @@
|
||||
# 2003-Sep-27 BRS Removed IPSERVER after XNET is included
|
||||
#
|
||||
|
||||
# To build with ipserver use the following two lines instead the uncommented ones
|
||||
# PROD_FLAGS=-O2 -march=i586 -mcpu=i686 -DMINGW -mno-cygwin -mthreads -Wall -Wno-unused-variable -Wno-unknown-pragmas -Wno-parentheses -Wno-switch -fmessage-length=0 -Dlint -DMAXPATHLEN=255 -DWIN32_LEAN_AND_MEAN -MMD
|
||||
# DEV_FLAGS=-ggdb -march=i586 -mcpu=i686 -DMINGW -mno-cygwin -mthreads -Wall -Wno-unused-variable -Wno-unknown-pragmas -Wno-parentheses -Wno-switch -fmessage-length=0 -Dlint -DMAXPATHLEN=255 -DDEBUG_GDS_ALLOC -DWIN32_LEAN_AND_MEAN -MMD
|
||||
|
||||
# -Wno-unused-variable is used due to unused gpre generated variables
|
||||
PROD_FLAGS=-O2 -march=i586 -mcpu=i686 -DMINGW -mno-cygwin -mthreads -Wall -Wshadow -Wundef -pedantic -Wno-long-long -Wno-unused-variable -Wno-unknown-pragmas -Wno-parentheses -Wno-switch -fmessage-length=0 -Dlint -DWIN32_LEAN_AND_MEAN -MMD
|
||||
DEV_FLAGS=-ggdb -march=i586 -mcpu=i686 -DMINGW -mno-cygwin -mthreads -Wall -Wshadow -Wundef -pedantic -Wno-long-long -Wno-unused-variable -Wno-unknown-pragmas -Wno-parentheses -Wno-switch -fmessage-length=0 -Dlint -DWIN32_LEAN_AND_MEAN -MMD
|
||||
@ -42,8 +38,6 @@ LIB_GUI:= -mwindows -lcomctl32 -lgdi32
|
||||
|
||||
EMBED_UTIL_TARGETS:=gstat gsec nbackup fb_lock_print
|
||||
CLIENT_UTIL_TARGETS:=gstat gsec ibguard instsvc instreg nbackup fb_lock_print
|
||||
# To build with ipserver uncomment the following line
|
||||
# WIN_IPSERVER_Files:=ipserver.cpp alli.cpp
|
||||
|
||||
Physical_IO_Module=os/win32/winnt.cpp
|
||||
|
||||
|
@ -216,22 +216,6 @@ SOURCE=..\..\..\src\remote\xdr.cpp
|
||||
SOURCE=..\..\..\src\remote\xnet.cpp
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "IPSERVER files"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\src\ipserver\alli.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\src\ipserver\ipcevent.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\src\ipserver\ipclient.cpp
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "DSQL files"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
|
@ -1,141 +0,0 @@
|
||||
# Microsoft Developer Studio Project File - Name="ipserver" - Package Owner=<4>
|
||||
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||
# ** DO NOT EDIT **
|
||||
|
||||
# TARGTYPE "Win32 (x86) Static Library" 0x0104
|
||||
|
||||
CFG=ipserver - Win32 Release
|
||||
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||
!MESSAGE use the Export Makefile command and run
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "ipserver.mak".
|
||||
!MESSAGE
|
||||
!MESSAGE You can specify a configuration when running NMAKE
|
||||
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||
!MESSAGE
|
||||
!MESSAGE NMAKE /f "ipserver.mak" CFG="ipserver - Win32 Release"
|
||||
!MESSAGE
|
||||
!MESSAGE Possible choices for configuration are:
|
||||
!MESSAGE
|
||||
!MESSAGE "ipserver - Win32 Debug" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE "ipserver - Win32 Release" (based on "Win32 (x86) Static Library")
|
||||
!MESSAGE
|
||||
|
||||
# Begin Project
|
||||
# PROP AllowPerConfigDependencies 0
|
||||
# PROP Scc_ProjName ""
|
||||
# PROP Scc_LocalPath ""
|
||||
CPP=cl.exe
|
||||
RSC=rc.exe
|
||||
|
||||
!IF "$(CFG)" == "ipserver - Win32 Debug"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir ""
|
||||
# PROP BASE Intermediate_Dir ""
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "..\..\..\temp\debug\ipserver"
|
||||
# PROP Intermediate_Dir "..\..\..\temp\debug\ipserver"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /GR /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /MDd /W3 /Gm /GX /GR /ZI /Od /I "../../../src/include" /I "../../../src/include/gen" /D "_DEBUG" /D "_LIB" /D "WIN32" /D "_MBCS" /D "_X86_" /D "DEV_BUILD" /D "SUPERSERVER" /FD /GZ /c
|
||||
# ADD BASE RSC /l 0x41d /d "_DEBUG"
|
||||
# ADD RSC /l 0x41d /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo
|
||||
|
||||
!ELSEIF "$(CFG)" == "ipserver - Win32 Release"
|
||||
|
||||
# PROP BASE Use_MFC 0
|
||||
# PROP BASE Use_Debug_Libraries 1
|
||||
# PROP BASE Output_Dir ""
|
||||
# PROP BASE Intermediate_Dir ""
|
||||
# PROP BASE Target_Dir ""
|
||||
# PROP Use_MFC 0
|
||||
# PROP Use_Debug_Libraries 1
|
||||
# PROP Output_Dir "..\..\..\temp\release\ipserver"
|
||||
# PROP Intermediate_Dir "..\..\..\temp\release\ipserver"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /MDd /W3 /GX /GR /Ot /Oi /Op /Oy /Ob2 /I "../../../src/include" /I "../../../src/include/gen" /D "NDEBUG" /D "_LIB" /D "WIN32" /D "_MBCS" /D "_X86_" /FD /GZ /c
|
||||
# SUBTRACT BASE CPP /YX
|
||||
# ADD CPP /nologo /MD /W3 /GX /GR /Ot /Og /Oi /Op /Oy /Ob1 /I "../../../src/include" /I "../../../src/include/gen" /D "NDEBUG" /D "_LIB" /D "WIN32" /D "_MBCS" /D "_X86_" /D "SUPERSERVER" /FD /EHc- /c
|
||||
# ADD BASE RSC /l 0x41d /d "_DEBUG"
|
||||
# ADD RSC /l 0x41d /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
# ADD BASE BSC32 /nologo
|
||||
# ADD BSC32 /nologo
|
||||
LIB32=link.exe -lib
|
||||
# ADD BASE LIB32 /nologo
|
||||
# ADD LIB32 /nologo
|
||||
|
||||
!ENDIF
|
||||
|
||||
# Begin Target
|
||||
|
||||
# Name "ipserver - Win32 Debug"
|
||||
# Name "ipserver - Win32 Release"
|
||||
# Begin Group "IPSERVER files"
|
||||
|
||||
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\src\ipserver\alli.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\src\ipserver\ipcevent.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\src\ipserver\ipclient.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\src\ipserver\ipserver.cpp
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Header files"
|
||||
|
||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\src\ipserver\alli_proto.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\src\ipserver\blk.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\src\ipserver\ipapi_proto.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\src\ipserver\ipc.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\src\ipserver\ipcli_proto.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\src\ipserver\ipevt_proto.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\src\ipserver\ips.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=..\..\..\src\ipserver\ipsrv_proto.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
@ -1,109 +0,0 @@
|
||||
/*
|
||||
* PROGRAM: Interprocess server interface
|
||||
* MODULE: alli.cpp
|
||||
* DESCRIPTION: Internal block allocator
|
||||
*
|
||||
* The contents of this file are subject to the Interbase Public
|
||||
* License Version 1.0 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy
|
||||
* of the License at http://www.Inprise.com/IPL.html
|
||||
*
|
||||
* Software distributed under the License is distributed on an
|
||||
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
|
||||
* or implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code was created by Inprise Corporation
|
||||
* and its predecessors. Portions created by Inprise Corporation are
|
||||
* Copyright (C) Inprise Corporation.
|
||||
*
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________.
|
||||
*/
|
||||
|
||||
#include "firebird.h"
|
||||
#include <windows.h>
|
||||
|
||||
#include "../ipserver/ipc.h"
|
||||
|
||||
#define BLKDEF(type, root, tail) {sizeof (struct root), tail},
|
||||
static struct
|
||||
{
|
||||
SSHORT typ_root_length;
|
||||
SSHORT typ_tail_length;
|
||||
} PIPE_block_sizes[] = {
|
||||
{0, 0},
|
||||
|
||||
#include "../ipserver/blk.h"
|
||||
{0, 0}
|
||||
};
|
||||
|
||||
#include "../jrd/gds_proto.h"
|
||||
#include "../ipserver/alli_proto.h"
|
||||
|
||||
|
||||
//____________________________________________________________
|
||||
//
|
||||
// Allocate a block.
|
||||
//
|
||||
void* ALLI_alloc(ULONG size)
|
||||
{
|
||||
return gds__alloc(size);
|
||||
}
|
||||
|
||||
|
||||
//____________________________________________________________
|
||||
//
|
||||
// Allocate a block from a given pool and initialize the block.
|
||||
// This is the primary block allocation routine.
|
||||
//
|
||||
BLK ALLI_block(UCHAR type, int count)
|
||||
{
|
||||
/*
|
||||
|
||||
if (type <= (SCHAR) type_MIN || type >= (SCHAR) type_MAX)
|
||||
abort();
|
||||
|
||||
*/
|
||||
|
||||
// Compute block length
|
||||
|
||||
const USHORT tail = PIPE_block_sizes[type].typ_tail_length;
|
||||
USHORT size = PIPE_block_sizes[type].typ_root_length + count * tail;
|
||||
|
||||
BLK block = (BLK) ALLI_alloc((SLONG) size);
|
||||
|
||||
if (block)
|
||||
{
|
||||
block->blk_type = type;
|
||||
block->blk_length = size;
|
||||
|
||||
size -= sizeof(struct blk);
|
||||
if (size)
|
||||
{
|
||||
memset((SCHAR *) block + sizeof(struct blk), 0, size);
|
||||
}
|
||||
}
|
||||
|
||||
return block;
|
||||
}
|
||||
|
||||
|
||||
//____________________________________________________________
|
||||
//
|
||||
// Free a block.
|
||||
//
|
||||
void ALLI_free(void* block)
|
||||
{
|
||||
gds__free(block);
|
||||
}
|
||||
|
||||
|
||||
//____________________________________________________________
|
||||
//
|
||||
// Release a structured block.
|
||||
//
|
||||
void ALLI_release(BLK block)
|
||||
{
|
||||
ALLI_free(block);
|
||||
}
|
@ -1,33 +0,0 @@
|
||||
/*
|
||||
* PROGRAM: Interprocess Interface Allocator
|
||||
* MODULE: alli_proto.h
|
||||
* DESCRIPTION: Prototype Header file for alli.cpp
|
||||
*
|
||||
* The contents of this file are subject to the Interbase Public
|
||||
* License Version 1.0 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy
|
||||
* of the License at http://www.Inprise.com/IPL.html
|
||||
*
|
||||
* Software distributed under the License is distributed on an
|
||||
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
|
||||
* or implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code was created by Inprise Corporation
|
||||
* and its predecessors. Portions created by Inprise Corporation are
|
||||
* Copyright (C) Inprise Corporation.
|
||||
*
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________.
|
||||
*/
|
||||
|
||||
#ifndef ALLI_PROTO_H
|
||||
#define ALLI_PROTO_H
|
||||
|
||||
void* ALLI_alloc(ULONG);
|
||||
BLK ALLI_block(UCHAR, int);
|
||||
void ALLI_free(void*);
|
||||
void ALLI_release(BLK);
|
||||
|
||||
#endif /* ALLI_PROTO_H */
|
||||
|
@ -1,30 +0,0 @@
|
||||
/*
|
||||
* PROGRAM: Interprocess server interface
|
||||
* MODULE: blk.h
|
||||
* DESCRIPTION: Block type definitions
|
||||
*
|
||||
* The contents of this file are subject to the Interbase Public
|
||||
* License Version 1.0 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy
|
||||
* of the License at http://www.Inprise.com/IPL.html
|
||||
*
|
||||
* Software distributed under the License is distributed on an
|
||||
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
|
||||
* or implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code was created by Inprise Corporation
|
||||
* and its predecessors. Portions created by Inprise Corporation are
|
||||
* Copyright (C) Inprise Corporation.
|
||||
*
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________.
|
||||
*/
|
||||
|
||||
BLKDEF(type_idb, idb, 0)
|
||||
BLKDEF(type_irq, irq, 0)
|
||||
BLKDEF(type_itr, itr, 0)
|
||||
BLKDEF(type_ibl, ibl, 1)
|
||||
BLKDEF(type_ivnt, ivnt, 0)
|
||||
BLKDEF(type_ipserver_isr, ipserver_isr, 0)
|
||||
BLKDEF(type_icc, icc, 0)
|
@ -1,167 +0,0 @@
|
||||
/*
|
||||
* PROGRAM: JRD Access Method
|
||||
* MODULE: ipapi_proto.h
|
||||
* DESCRIPTION: Prototype header file for ipclient.cpp api calls
|
||||
*
|
||||
* The contents of this file are subject to the Interbase Public
|
||||
* License Version 1.0 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy
|
||||
* of the License at http://www.Inprise.com/IPL.html
|
||||
*
|
||||
* Software distributed under the License is distributed on an
|
||||
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
|
||||
* or implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code was created by Inprise Corporation
|
||||
* and its predecessors. Portions created by Inprise Corporation are
|
||||
* Copyright (C) Inprise Corporation.
|
||||
*
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef IPAPI_PROTO_H
|
||||
#define IPAPI_PROTO_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
ISC_STATUS IPI_attach_database(ISC_STATUS*, USHORT, const SCHAR*,
|
||||
struct idb**, USHORT, const SCHAR*,
|
||||
const SCHAR*);
|
||||
ISC_STATUS IPI_blob_info(ISC_STATUS*, struct ibl**, USHORT,
|
||||
const UCHAR*, USHORT, UCHAR*);
|
||||
ISC_STATUS IPI_cancel_blob(ISC_STATUS *, struct ibl **);
|
||||
ISC_STATUS IPI_cancel_events(ISC_STATUS *, struct idb **, SLONG *);
|
||||
ISC_STATUS IPI_close_blob(ISC_STATUS *, struct ibl **);
|
||||
ISC_STATUS IPI_commit_transaction(ISC_STATUS *, struct itr **);
|
||||
ISC_STATUS IPI_commit_retaining(ISC_STATUS *, struct itr **);
|
||||
ISC_STATUS IPI_compile_request(ISC_STATUS*, struct idb**,
|
||||
struct irq**,
|
||||
USHORT, const UCHAR*);
|
||||
ISC_STATUS IPI_create_blob(ISC_STATUS *, struct idb **,
|
||||
struct itr **, struct ibl **,
|
||||
struct bid *);
|
||||
ISC_STATUS IPI_create_blob2(ISC_STATUS*, struct idb**,
|
||||
struct itr**, struct ibl**,
|
||||
struct bid*, USHORT, const UCHAR*);
|
||||
ISC_STATUS IPI_create_database(ISC_STATUS*, USHORT, const SCHAR*,
|
||||
struct idb**, USHORT, const SCHAR*,
|
||||
SSHORT, const SCHAR*);
|
||||
ISC_STATUS IPI_database_info(ISC_STATUS*, struct idb**, USHORT,
|
||||
const UCHAR*, USHORT, UCHAR*);
|
||||
ISC_STATUS IPI_ddl(ISC_STATUS*, struct idb**, struct itr**,
|
||||
USHORT, const UCHAR*);
|
||||
ISC_STATUS IPI_detach_database(ISC_STATUS *, struct idb **);
|
||||
ISC_STATUS IPI_drop_database(ISC_STATUS *, struct idb **);
|
||||
ISC_STATUS IPI_get_segment(ISC_STATUS *, struct ibl **, USHORT *,
|
||||
USHORT, UCHAR *);
|
||||
ISC_STATUS IPI_get_slice(ISC_STATUS*, struct idb**, struct itr**,
|
||||
struct bid*, USHORT, const UCHAR*, USHORT,
|
||||
const UCHAR*, SLONG, UCHAR*, SLONG*);
|
||||
ISC_STATUS IPI_open_blob(ISC_STATUS*, struct idb**, struct itr**,
|
||||
struct ibl**, struct bid*);
|
||||
ISC_STATUS IPI_open_blob2(ISC_STATUS*, struct idb**,
|
||||
struct itr**, struct ibl**,
|
||||
struct bid*, USHORT, const UCHAR*);
|
||||
ISC_STATUS IPI_prepare_transaction(ISC_STATUS *, struct itr **,
|
||||
USHORT, UCHAR *);
|
||||
ISC_STATUS IPI_put_segment(ISC_STATUS*, struct ibl**, USHORT,
|
||||
const UCHAR*);
|
||||
ISC_STATUS IPI_put_slice(ISC_STATUS*, struct idb**, struct itr**,
|
||||
struct bid*, USHORT, const UCHAR*, USHORT,
|
||||
const UCHAR*, SLONG, UCHAR*);
|
||||
ISC_STATUS IPI_que_events(ISC_STATUS*, struct idb**, SLONG*,
|
||||
USHORT, const UCHAR*,
|
||||
FPTR_EVENT_CALLBACK, void*);
|
||||
ISC_STATUS IPI_receive(ISC_STATUS *, struct irq **, SSHORT, USHORT,
|
||||
UCHAR *, SSHORT
|
||||
#ifdef SCROLLABLE_CURSORS
|
||||
, USHORT, ULONG
|
||||
#endif
|
||||
);
|
||||
ISC_STATUS IPI_reconnect_transaction(ISC_STATUS*, struct idb**,
|
||||
struct itr**, USHORT,
|
||||
const UCHAR*);
|
||||
ISC_STATUS IPI_release_request(ISC_STATUS *, struct irq **);
|
||||
ISC_STATUS IPI_request_info(ISC_STATUS*, struct irq**, USHORT,
|
||||
USHORT, const UCHAR*, USHORT, UCHAR*);
|
||||
ISC_STATUS IPI_rollback_transaction(ISC_STATUS *, struct itr **);
|
||||
ISC_STATUS IPI_rollback_retaining(ISC_STATUS *, struct itr **);
|
||||
ISC_STATUS IPI_seek_blob(ISC_STATUS *, struct ibl **, SSHORT, SLONG,
|
||||
SLONG *);
|
||||
ISC_STATUS IPI_send(ISC_STATUS *, struct irq **, SSHORT, USHORT,
|
||||
UCHAR *, SSHORT);
|
||||
ISC_STATUS IPI_service_attach(ISC_STATUS*, USHORT, const TEXT*,
|
||||
struct idb**, USHORT, const SCHAR*);
|
||||
ISC_STATUS IPI_service_detach(ISC_STATUS *, struct idb **);
|
||||
ISC_STATUS IPI_service_query(ISC_STATUS*, struct idb**, ULONG*,
|
||||
USHORT, const SCHAR*,
|
||||
USHORT, const SCHAR*,
|
||||
USHORT, SCHAR*);
|
||||
ISC_STATUS IPI_service_start(ISC_STATUS*, struct idb**, ULONG*,
|
||||
USHORT, const SCHAR*);
|
||||
ISC_STATUS IPI_start_request(ISC_STATUS *, struct irq **,
|
||||
struct itr **, SSHORT);
|
||||
ISC_STATUS IPI_start_and_send(ISC_STATUS *, struct irq **,
|
||||
struct itr **, SSHORT, USHORT,
|
||||
UCHAR *, SSHORT);
|
||||
ISC_STATUS IPI_start_multiple(ISC_STATUS *, struct itr **, SSHORT,
|
||||
int **);
|
||||
ISC_STATUS IPI_start_transaction(ISC_STATUS *, struct itr **,
|
||||
SSHORT, ...);
|
||||
ISC_STATUS IPI_transaction_info(ISC_STATUS*, struct itr**, USHORT,
|
||||
const UCHAR*, USHORT, UCHAR*);
|
||||
ISC_STATUS IPI_transact_request(ISC_STATUS*, struct idb**,
|
||||
struct itr**, USHORT, const UCHAR*,
|
||||
USHORT, UCHAR*, USHORT,
|
||||
UCHAR*);
|
||||
ISC_STATUS IPI_unwind_request(ISC_STATUS *, struct irq **, SSHORT);
|
||||
|
||||
/* DSQL entrypoints */
|
||||
|
||||
ISC_STATUS IPI_allocate_statement(ISC_STATUS *, struct idb **,
|
||||
struct ipserver_isr **);
|
||||
ISC_STATUS IPI_execute(ISC_STATUS *, struct itr **,
|
||||
struct ipserver_isr **, USHORT, UCHAR *,
|
||||
USHORT, USHORT, UCHAR *);
|
||||
ISC_STATUS IPI_execute2(ISC_STATUS *, struct itr **,
|
||||
struct ipserver_isr **, USHORT, UCHAR *,
|
||||
USHORT, USHORT, UCHAR *, USHORT,
|
||||
UCHAR *, USHORT, USHORT, UCHAR *);
|
||||
ISC_STATUS IPI_execute_immediate(ISC_STATUS*, struct idb**,
|
||||
struct itr**, USHORT, const UCHAR*,
|
||||
USHORT, USHORT, const UCHAR*,
|
||||
USHORT, USHORT, UCHAR*);
|
||||
ISC_STATUS IPI_execute_immediate2(ISC_STATUS*, struct idb**,
|
||||
struct itr**, USHORT,
|
||||
const UCHAR*, USHORT, USHORT,
|
||||
const UCHAR*, USHORT, USHORT,
|
||||
UCHAR*, USHORT, UCHAR*,
|
||||
USHORT, USHORT, UCHAR*);
|
||||
ISC_STATUS IPI_fetch(ISC_STATUS*, struct ipserver_isr**, USHORT,
|
||||
const UCHAR*, USHORT, USHORT, UCHAR*);
|
||||
ISC_STATUS IPI_free_statement(ISC_STATUS *, struct ipserver_isr **,
|
||||
USHORT);
|
||||
ISC_STATUS IPI_insert(ISC_STATUS *, struct ipserver_isr **, USHORT,
|
||||
UCHAR *, USHORT, USHORT, UCHAR *);
|
||||
ISC_STATUS IPI_prepare(ISC_STATUS *, struct itr **,
|
||||
struct ipserver_isr **, USHORT, UCHAR *,
|
||||
USHORT, USHORT, UCHAR *, USHORT,
|
||||
UCHAR *);
|
||||
ISC_STATUS IPI_set_cursor_name(ISC_STATUS*, struct ipserver_isr**,
|
||||
const UCHAR*, USHORT);
|
||||
ISC_STATUS IPI_sql_info(ISC_STATUS*, struct ipserver_isr**,
|
||||
USHORT, const UCHAR*, USHORT, UCHAR*);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
|
||||
#endif // IPAPI_PROTO_H
|
||||
|
@ -1,669 +0,0 @@
|
||||
/*
|
||||
* PROGRAM: Interprocess Interface definitions
|
||||
* MODULE: ipc.h
|
||||
* DESCRIPTION: Common descriptions
|
||||
*
|
||||
* The contents of this file are subject to the Interbase Public
|
||||
* License Version 1.0 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy
|
||||
* of the License at http://www.Inprise.com/IPL.html
|
||||
*
|
||||
* Software distributed under the License is distributed on an
|
||||
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
|
||||
* or implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code was created by Inprise Corporation
|
||||
* and its predecessors. Portions created by Inprise Corporation are
|
||||
* Copyright (C) Inprise Corporation.
|
||||
*
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________.
|
||||
*/
|
||||
|
||||
#ifndef IPSERVER_IPC_H
|
||||
#define IPSERVER_IPC_H
|
||||
|
||||
#include <stdio.h>
|
||||
#include "../jrd/common.h"
|
||||
#include "../jrd/thd.h"
|
||||
|
||||
#define ALLOC(type) ALLI_block (type, 0)
|
||||
#define ALLOCV(type, count) ALLI_block (type, count)
|
||||
|
||||
#ifdef BUFSIZ
|
||||
const USHORT BLOB_LENGTH = BUFSIZ - 20;
|
||||
#else
|
||||
const USHORT BLOB_LENGTH = 1024 - 20;
|
||||
#endif
|
||||
|
||||
typedef enum {
|
||||
op_attach, /* Attach database */
|
||||
op_create, /* Create database */
|
||||
op_detach, /* Detach database */
|
||||
|
||||
op_compile, /* Request based operations */
|
||||
op_start,
|
||||
op_start_and_send,
|
||||
op_send,
|
||||
op_receive,
|
||||
op_unwind,
|
||||
op_release,
|
||||
|
||||
op_transaction, /* Transaction operations */
|
||||
op_commit,
|
||||
op_rollback,
|
||||
op_reconnect,
|
||||
|
||||
op_create_blob, /* Blob operations */
|
||||
op_open_blob,
|
||||
op_get_segment,
|
||||
op_put_segment,
|
||||
op_cancel_blob,
|
||||
op_close_blob,
|
||||
|
||||
op_info_database, /* Information services */
|
||||
op_info_request,
|
||||
op_info_transaction,
|
||||
op_info_blob,
|
||||
|
||||
op_prepare2,
|
||||
op_commit_retaining,
|
||||
op_rollback_retaining,
|
||||
op_open_blob2,
|
||||
op_create_blob2,
|
||||
op_ddl,
|
||||
op_que_events,
|
||||
op_cancel_events,
|
||||
op_put_slice,
|
||||
op_get_slice,
|
||||
op_seek_blob,
|
||||
|
||||
op_allocate_stmt, /* DSQL operations */
|
||||
op_execute,
|
||||
op_exec_immediate,
|
||||
op_fetch,
|
||||
op_free_stmt,
|
||||
op_prepare_stmt,
|
||||
op_set_cursor,
|
||||
op_info_sql, /* Last opcode in V3.3 */
|
||||
|
||||
op_insert,
|
||||
op_execute2,
|
||||
op_exec_immediate2,
|
||||
|
||||
op_service_attach,
|
||||
op_service_detach,
|
||||
op_service_info,
|
||||
op_service_start,
|
||||
|
||||
op_transact_request,
|
||||
op_drop_database,
|
||||
|
||||
op_ping,
|
||||
op_disconnect,
|
||||
op_max,
|
||||
op_gateway_sync = 127
|
||||
} P_OP;
|
||||
|
||||
/* mapped file parameters */
|
||||
|
||||
#define IPS_MAPPED_PER_CLI(p) ((ULONG)(p) * 1024L)
|
||||
#define IPS_MAPPED_FOR_CLI(p,x) ((ULONG)(x) * IPS_MAPPED_PER_CLI(p))
|
||||
#define IPS_MAPPED_SIZE(p,c) ((ULONG)(c) * IPS_MAPPED_PER_CLI(p))
|
||||
#define IPS_USEFUL_SPACE(p) (IPS_MAPPED_PER_CLI(p) - sizeof( ips_comm_area))
|
||||
|
||||
const USHORT IPS_DEF_NUM_CLI = 10; /* default clients per mapped file */
|
||||
// const USHORT IPS_DEF_NUM_MAPS = 10; /* default maps available */
|
||||
const USHORT IPS_DEF_PAGES_PER_CLI = 8; /* default 1k pages space per client */
|
||||
|
||||
const USHORT IPS_MIN_NUM_CLI = 1; /* min clients per mapped file */
|
||||
// const USHORT IPS_MIN_NUM_MAPS = 1; /* min maps available */
|
||||
const USHORT IPS_MIN_PAGES_PER_CLI = 1; /* min 1k pages space per client */
|
||||
|
||||
const USHORT IPS_MAX_NUM_CLI = 64; /* max clients per mapped file */
|
||||
// const USHORT IPS_MAX_NUM_MAPS = 64; /* max maps available */
|
||||
const USHORT IPS_MAX_PAGES_PER_CLI = 16; /* max 1k pages space per client */
|
||||
|
||||
#define IPS_PACK_PARAMS(x,p,m,u) (((ULONG)(x) << 24) + ((ULONG)(p) << 16) + ((m) << 8) + (u) + IP_BIAS)
|
||||
#define IPS_UNPACK_MAX_USERS(n) (((ULONG)(n - IP_BIAS) >> 24) & 0xFF)
|
||||
#define IPS_UNPACK_PAGES(n) (((ULONG)(n - IP_BIAS) >> 16) & 0xFF)
|
||||
#define IPS_UNPACK_MAPNUM(n) (((ULONG)(n - IP_BIAS) >> 8) & 0xFF)
|
||||
#define IPS_UNPACK_USERNUM(n) ((n - IP_BIAS) & 0xFF)
|
||||
|
||||
typedef struct bid {
|
||||
ULONG bid_relation_id; /* Relation id (or null) */
|
||||
ULONG bid_number; /* Record number */
|
||||
} *BID;
|
||||
|
||||
/* Block types */
|
||||
|
||||
struct blk;
|
||||
|
||||
#ifndef INCLUDE_FB_BLK
|
||||
#include "../include/old_fb_blk.h"
|
||||
#endif
|
||||
|
||||
/* Block types */
|
||||
|
||||
typedef struct cnct {
|
||||
int *cnct_read_pipe; /* this is really a FILE pointer */
|
||||
int *cnct_write_pipe; /* this is really a FILE pointer */
|
||||
} *CNCT;
|
||||
|
||||
/* mapped file structure */
|
||||
|
||||
typedef struct ipm {
|
||||
struct ipm *ipm_next; /* pointer to next one */
|
||||
USHORT ipm_count; /* slots in use */
|
||||
USHORT ipm_number; /* mapped area number */
|
||||
HANDLE ipm_handle; /* handle of mapped memory */
|
||||
USHORT ipm_flags; /* flag word */
|
||||
LPVOID ipm_address; /* address of mapped memory */
|
||||
UCHAR ipm_ids[IPS_MAX_NUM_CLI];
|
||||
/* ids */
|
||||
} *IPM;
|
||||
|
||||
/* mapped structure flags */
|
||||
const USHORT IPMF_SERVER_SHUTDOWN = 1; /* server has shut down */
|
||||
|
||||
/* thread connection control block */
|
||||
|
||||
typedef struct icc
|
||||
{
|
||||
blk icc_header;
|
||||
struct icc* icc_next; /* pointer to next thread */
|
||||
struct idb* icc_databases; /* linked list of attachments */
|
||||
struct ipm* icc_ipm; /* pointer back to ipm */
|
||||
SSHORT icc_file; /* this thread's mapped file number */
|
||||
SSHORT icc_slot; /* this thread's slot number */
|
||||
DWORD icc_thread_handle; /* thread's handle */
|
||||
HANDLE icc_file_handle; /* mapped file's handle */
|
||||
HANDLE icc_client_sem; /* client's semaphore handle */
|
||||
HANDLE icc_server_sem; /* server's semaphore handle */
|
||||
HANDLE icc_server_proc; /* server's process handle */
|
||||
HANDLE icc_client_proc; /* client's process handle */
|
||||
DWORD icc_server_id; /* server's process id */
|
||||
DWORD icc_client_id; /* client's process id */
|
||||
SSHORT icc_flags; /* status bits */
|
||||
HANDLE icc_waits[2]; /* wait for these handles */
|
||||
UCHAR* icc_mapped_addr; /* where the thread's mapped to */
|
||||
} *ICC;
|
||||
|
||||
/* icc structure flags */
|
||||
const USHORT ICCF_SHUTDOWN = 1; /* shutdown in progress */
|
||||
const USHORT ICCF_SERVER_SHUTDOWN = 2; /* server has shut down */
|
||||
const USHORT ICCF_UNMAP_CLIENT = 4; /* client maps must be shut down */
|
||||
|
||||
/* database block */
|
||||
|
||||
typedef struct idb
|
||||
{
|
||||
blk idb_header;
|
||||
struct icc* idb_thread; /* back pointer to thread */
|
||||
FB_API_HANDLE idb_handle; /* database handle */
|
||||
struct itr* idb_transactions; /* linked list of transactions */
|
||||
struct irq* idb_requests; /* compiled requests */
|
||||
struct ipserver_isr* idb_sql_requests; /* SQL requests */
|
||||
struct ivnt* idb_events; /* events */
|
||||
struct idb* idb_next; /* pointer to next db */
|
||||
int* idb_status_vector; /* pointer to status vector */
|
||||
USHORT idb_flags; /* flags (see below) */
|
||||
SCHAR* idb_setjmp;
|
||||
} *IDB;
|
||||
|
||||
const USHORT IDBF_DATABASE_ATTACHMENT = 1;
|
||||
const USHORT IDBF_SERVICE_ATTACHMENT = 2;
|
||||
const USHORT IDBF_SERVER_SHUTDOWN = 4;
|
||||
|
||||
/* transaction block */
|
||||
|
||||
typedef struct itr
|
||||
{
|
||||
blk itr_header;
|
||||
struct idb* itr_idb;
|
||||
struct itr* itr_next;
|
||||
struct ibl* itr_blobs;
|
||||
FB_API_HANDLE itr_handle;
|
||||
USHORT itr_flags;
|
||||
} *ITR;
|
||||
|
||||
const USHORT ITR_limbo = 1;
|
||||
|
||||
/* blob control block */
|
||||
|
||||
typedef struct ibl
|
||||
{
|
||||
blk ibl_header;
|
||||
struct idb* ibl_idb;
|
||||
struct itr* ibl_itr;
|
||||
struct ibl* ibl_next;
|
||||
FB_API_HANDLE ibl_handle;
|
||||
SLONG ibl_offset; /* Apparent (to user) offset in blob */
|
||||
USHORT ibl_flags;
|
||||
UCHAR* ibl_ptr;
|
||||
USHORT ibl_length;
|
||||
USHORT ibl_fragment_length;
|
||||
USHORT ibl_buffer_length;
|
||||
UCHAR ibl_buffer[1];
|
||||
} *IBL;
|
||||
|
||||
//const USHORT IBL_eof = 1;
|
||||
//const USHORT IBL_segment = 2;
|
||||
//const USHORT IBL_eof_pending = 4;
|
||||
const USHORT IBL_create = 8;
|
||||
|
||||
/* request block */
|
||||
|
||||
typedef struct irq {
|
||||
blk irq_header;
|
||||
struct idb *irq_idb;
|
||||
struct tra *irq_itr;
|
||||
struct irq *irq_next;
|
||||
struct irq **irq_user_handle;
|
||||
FB_API_HANDLE irq_handle;
|
||||
} *IRQ;
|
||||
|
||||
/* event structure */
|
||||
|
||||
typedef struct ivnt {
|
||||
blk ivnt_header;
|
||||
struct ivnt *ivnt_next;
|
||||
struct idb *ivnt_idb;
|
||||
FPTR_EVENT_CALLBACK ivnt_ast;
|
||||
void* ivnt_arg;
|
||||
HWND ivnt_window;
|
||||
SLONG ivnt_id;
|
||||
SLONG ivnt_handle;
|
||||
} *IVNT;
|
||||
|
||||
/* remote SQL request */
|
||||
|
||||
typedef struct ipserver_isr {
|
||||
blk isr_header;
|
||||
struct ipserver_isr *isr_next;
|
||||
struct idb *isr_idb;
|
||||
struct itr *isr_itr;
|
||||
FB_API_HANDLE isr_handle;
|
||||
USHORT isr_rec_count;
|
||||
USHORT isr_max_recs;
|
||||
USHORT isr_eof_flag;
|
||||
USHORT isr_batch_flag;
|
||||
ISC_STATUS_ARRAY isr_status;
|
||||
UCHAR *isr_cursor;
|
||||
UCHAR *isr_packed;
|
||||
} *IPSERVER_ISR;
|
||||
|
||||
#define BLKDEF(type, root, tail) type,
|
||||
enum blk_t {
|
||||
type_MIN = 0,
|
||||
#include "../ipserver/blk.h"
|
||||
type_MAX
|
||||
};
|
||||
#undef BLKDEF
|
||||
|
||||
/*
|
||||
This structure is used to move stuff between the ipc buffer(s)
|
||||
and the client's and server's memory.
|
||||
|
||||
Three buffers are tracked - a client buffer, a server buffer and
|
||||
a buffer within the communications data structure. For the client
|
||||
and server buffers, the address within that task plus the max size
|
||||
and current size are maintained. there is a flag indicating whether
|
||||
the buffer is used for input, output, both or neither. For the
|
||||
comm buffer, a relative offset from the start of the comm area,
|
||||
the current area mapped in the comm area and its allocated size
|
||||
in the comm area are maintained.
|
||||
|
||||
When the client needs to pass stuff to the server, space will be
|
||||
allocated in the comm area for all client buffers. If there is
|
||||
insufficient space, the comm buffer will be filled by the client
|
||||
and emptied by the server as often as necessary to pass everything.
|
||||
the same process is carried out when the server responds for any
|
||||
data passed back to the client.
|
||||
|
||||
There can be up to five of these in use for a call to the server.
|
||||
The flag words are used to indicate what, if anything, to copy for
|
||||
each of the five transfer blocks.
|
||||
*/
|
||||
|
||||
typedef struct {
|
||||
ULONG ips_cl_size; /* client buffer size */
|
||||
ULONG ips_sv_size; /* server buffer size */
|
||||
ULONG ips_sv_alloced; /* server buffer size allocated */
|
||||
ULONG ips_cl_copied; /* client buffer copied so far */
|
||||
ULONG ips_sv_copied; /* server buffer copied so far */
|
||||
ULONG ips_com_offset; /* offset to comm buffer */
|
||||
ULONG ips_com_size; /* size of comm buffer */
|
||||
ULONG ips_com_curr; /* current mapped offset of comm buffer */
|
||||
ULONG ips_flags; /* flags */
|
||||
UCHAR *ips_cl_addr; /* address of client buffer */
|
||||
const UCHAR* ips_sv_addr; /* address of server buffer */
|
||||
UCHAR *ips_sv_buffer; /* allocated local buffer */
|
||||
} ips_string;
|
||||
|
||||
const ULONG IPS_INPUT_BUFFER = 1; /* used for input from client */
|
||||
const ULONG IPS_OUTPUT_BUFFER = 2; /* used for output to client */
|
||||
|
||||
|
||||
/*
|
||||
strucure used for attachments
|
||||
- attach database
|
||||
- attach service
|
||||
- create database
|
||||
|
||||
and for info calls
|
||||
- blob info
|
||||
- database info
|
||||
- query service info
|
||||
- request info
|
||||
- sql request info
|
||||
- transaction info
|
||||
|
||||
and for simple controls of various objects
|
||||
- cancel blob
|
||||
- cancel events
|
||||
- close blob
|
||||
- commit transaction
|
||||
- commit transaction (retaining)
|
||||
- detach database
|
||||
- detach service
|
||||
- drop database
|
||||
- dsql free statement
|
||||
- prepare transaction
|
||||
- release request
|
||||
- rollback transaction
|
||||
- unwind request
|
||||
*/
|
||||
|
||||
typedef struct {
|
||||
UCHAR *ips_handle; /* handle of object */
|
||||
ULONG ips_parameter; /* a parameter, used if needed */
|
||||
} ips_object;
|
||||
|
||||
const USHORT IPS_ATTACH_NAME = 0; /* use controller 0 for db name */
|
||||
const USHORT IPS_ATTACH_DPB = 1; /* use controller 1 for dpb */
|
||||
const USHORT IPS_ATTACH_EXPANDED= 2; /* use controller 2 for exp name */
|
||||
|
||||
const USHORT IPS_CREATE_NAME = 0; /* use controller 0 for db name */
|
||||
const USHORT IPS_CREATE_DPB = 1; /* use controller 1 for dpb */
|
||||
const USHORT IPS_CREATE_EXPANDED= 2; /* use controller 2 for exp name */
|
||||
|
||||
const USHORT IPS_ATTACH_SVC_NAME= 0; /* use controller 0 for service name */
|
||||
const USHORT IPS_ATTACH_SVC_SPB = 1; /* use controller 1 for spb */
|
||||
const USHORT IPS_START_SVC_SPB = 2; /* use controller 2 for start spb */
|
||||
|
||||
const USHORT IPS_CLOSE_BLOB_REM = 0; /* use controller 0 for remainders */
|
||||
|
||||
const USHORT IPS_INFO_ITEMS = 0; /* use controller 0 for items */
|
||||
const USHORT IPS_INFO_DATA = 1; /* use controller 1 for data */
|
||||
|
||||
const USHORT IPS_QUERY_RECV_ITEMS = 2;/* use controller 2 for recv items */
|
||||
|
||||
const USHORT IPS_PREPARE_TRANS = 0; /* use controller 0 for string */
|
||||
|
||||
|
||||
/* structure used to compile requests */
|
||||
|
||||
typedef struct {
|
||||
UCHAR *ips_db_handle; /* database handle */
|
||||
UCHAR *ips_rq_handle; /* returned request handle */
|
||||
} ips_compile_req;
|
||||
|
||||
const USHORT IPS_COMPILE_REQ = 0; /* use controller 0 for blr */
|
||||
|
||||
|
||||
/* structure used by create/open blob (and create/open blob2) */
|
||||
|
||||
typedef struct {
|
||||
UCHAR *ips_db_handle; /* database handle */
|
||||
UCHAR *ips_tr_handle; /* transaction handle */
|
||||
UCHAR *ips_bl_handle; /* returned blob handle */
|
||||
ULONG ips_rel_id; /* returned relation ID */
|
||||
ULONG ips_bid_number; /* returned blob ID number */
|
||||
} ips_blob;
|
||||
|
||||
const USHORT IPS_BLOB_BPB = 0; /* use contorller 0 for bpb */
|
||||
|
||||
|
||||
/* structure used for DDL operations */
|
||||
|
||||
typedef struct {
|
||||
UCHAR *ips_db_handle; /* database handle */
|
||||
UCHAR *ips_tr_handle; /* transaction handle */
|
||||
} ips_ddl;
|
||||
|
||||
const USHORT IPS_DDL_DDL = 0; /* use controller 0 for ddl */
|
||||
|
||||
|
||||
/*
|
||||
structure used for most DSQL operations
|
||||
- allocate
|
||||
- execute
|
||||
- execute2
|
||||
- execute immediate
|
||||
- execute immediate2
|
||||
- fetch
|
||||
- insert
|
||||
- prepare
|
||||
- set cursor
|
||||
*/
|
||||
|
||||
typedef struct {
|
||||
UCHAR *ips_db_handle; /* database handle */
|
||||
UCHAR *ips_tr_handle; /* transaction handle (in/out) */
|
||||
UCHAR *ips_st_handle; /* statement handle */
|
||||
ULONG ips_parameter; /* sql dialect/fetch status/set cursor */
|
||||
USHORT ips_msg_type; /* message type */
|
||||
USHORT ips_msg_out; /* output message type */
|
||||
USHORT ips_rec_count; /* packed records count */
|
||||
} ips_dsql;
|
||||
|
||||
const USHORT IPS_DSQL_EXEC_BLR = 0; /* use controller 0 for blr */
|
||||
const USHORT IPS_DSQL_EXEC_MSG = 1; /* use controller 1 for message */
|
||||
|
||||
const USHORT IPS_DSQL_EXEC2_BLR_IN = IPS_DSQL_EXEC_BLR;
|
||||
const USHORT IPS_DSQL_EXEC2_MSG_IN = IPS_DSQL_EXEC_MSG;
|
||||
const USHORT IPS_DSQL_EXEC2_BLR_OUT = 2; /* use controller 2 for output blr */
|
||||
const USHORT IPS_DSQL_EXEC2_MSG_OUT = 3; /* use controller 3 for output msg */
|
||||
|
||||
const USHORT IPS_DSQL_EXEC_IMMED_SQL = 0; /* use controller 0 for sql */
|
||||
const USHORT IPS_DSQL_EXEC_IMMED_BLR = 1; /* use controller 1 for blr */
|
||||
const USHORT IPS_DSQL_EXEC_IMMED_MSG = 2; /* use controller 2 for message */
|
||||
|
||||
const USHORT IPS_DSQL_EXEC_IMMED2_SQL = IPS_DSQL_EXEC_IMMED_SQL;
|
||||
const USHORT IPS_DSQL_EXEC_IMMED2_BLR_IN = IPS_DSQL_EXEC_IMMED_BLR;
|
||||
const USHORT IPS_DSQL_EXEC_IMMED2_MSG_IN = IPS_DSQL_EXEC_IMMED_MSG;
|
||||
const USHORT IPS_DSQL_EXEC_IMMED2_BLR_OUT = 3; /* use controller 3 for output blr */
|
||||
const USHORT IPS_DSQL_EXEC_IMMED2_MSG_OUT = 4; /* use controller 4 for output msg */
|
||||
|
||||
const USHORT IPS_DSQL_FETCH_BLR = 0; /* use controller 0 for blr */
|
||||
const USHORT IPS_DSQL_FETCH_MSG = 1; /* use controller 1 for message */
|
||||
|
||||
const USHORT IPS_DSQL_INSERT_BLR = 0; /* use controller 0 for blr */
|
||||
const USHORT IPS_DSQL_INSERT_MSG = 1; /* use controller 1 for message */
|
||||
|
||||
const USHORT IPS_DSQL_PREP_STRING = 0; /* use controller 0 for string */
|
||||
const USHORT IPS_DSQL_PREP_ITEMS = 1; /* use controller 1 for items */
|
||||
const USHORT IPS_DSQL_PREP_BUFFER = 2; /* use controller 2 for buffer */
|
||||
|
||||
const USHORT IPS_DSQL_SET_CURSOR = 0; /* use controller 0 for name */
|
||||
|
||||
|
||||
/* structure used to get/put blob segments */
|
||||
|
||||
typedef struct {
|
||||
UCHAR *ips_bl_handle; /* blob handle */
|
||||
USHORT ips_length; /* returned actual length */
|
||||
} ips_segment;
|
||||
|
||||
const USHORT IPS_BLOB_SEGMENT = 0; /* use controller 0 for segment */
|
||||
|
||||
|
||||
/* structure used to get/put array slices */
|
||||
|
||||
typedef struct {
|
||||
UCHAR *ips_db_handle; /* database handle */
|
||||
UCHAR *ips_tr_handle; /* transaction handle */
|
||||
ULONG ips_rel_id; /* array rel id */
|
||||
ULONG ips_number; /* array number */
|
||||
ULONG ips_length; /* returned actual length */
|
||||
} ips_slice;
|
||||
|
||||
const USHORT IPS_SLICE_SDL = 0; /* use controller 0 for sdl */
|
||||
const USHORT IPS_SLICE_PARAM = 1; /* use controller 1 for parameters */
|
||||
const USHORT IPS_SLICE_BUFFER = 2; /* use controller 2 for slice */
|
||||
|
||||
|
||||
/* structure for queueing events */
|
||||
|
||||
typedef struct {
|
||||
UCHAR *ips_db_handle; /* database handle */
|
||||
ULONG ips_event_id; /* returned event id */
|
||||
HWND ips_event_hwnd; /* window handle to return to */
|
||||
FPTR_EVENT_CALLBACK ips_ast; /* ast address */
|
||||
UCHAR* ips_arg; /* ast arg */
|
||||
} ips_que_events;
|
||||
|
||||
const USHORT IPS_QUEUE_EVENT = 0; /* use controller 0 for event */
|
||||
|
||||
|
||||
/* structure for send/receive message */
|
||||
|
||||
typedef struct {
|
||||
UCHAR *ips_tr_handle; /* transaction handle */
|
||||
UCHAR *ips_rq_handle; /* request handle */
|
||||
USHORT ips_msg_type; /* message type */
|
||||
USHORT ips_req_level; /* request level */
|
||||
#ifdef SCROLLABLE_CURSORS
|
||||
USHORT ips_direction; /* direction */
|
||||
ULONG ips_offset; /* offset */
|
||||
#endif
|
||||
} ips_request;
|
||||
|
||||
const USHORT IPS_SEND_MESSAGE = 0; /* use controller 0 for message */
|
||||
const USHORT IPS_RECEIVE_MESSAGE = 0; /* use controller 0 for message */
|
||||
|
||||
|
||||
/* structure used to reconnect transaction */
|
||||
|
||||
typedef struct {
|
||||
UCHAR *ips_db_handle; /* transaction handle */
|
||||
UCHAR *ips_tr_handle; /* transaction handle */
|
||||
} ips_reconnect;
|
||||
|
||||
const USHORT IPS_RECONNECT_ID = 0; /* use controller 0 for id */
|
||||
|
||||
|
||||
/* structure used to seek into a blob */
|
||||
|
||||
typedef struct {
|
||||
UCHAR *ips_bl_handle; /* blob handle */
|
||||
ULONG ips_offset; /* offset into blob */
|
||||
ULONG ips_result; /* returned result */
|
||||
USHORT ips_mode; /* seek mode */
|
||||
} ips_seek_blob;
|
||||
|
||||
|
||||
/* structure used to start transactions */
|
||||
|
||||
typedef struct {
|
||||
UCHAR *ips_tr_handle; /* returned transaction handle */
|
||||
USHORT ips_db_count; /* number of db's in transaction */
|
||||
} ips_start_trans;
|
||||
|
||||
|
||||
/* structure used for transact request */
|
||||
|
||||
typedef struct {
|
||||
UCHAR *ips_db_handle; /* database handle */
|
||||
UCHAR *ips_tr_handle; /* transaction handle (in/out) */
|
||||
} ips_transact_request;
|
||||
|
||||
const USHORT IPS_TRANS_REQ_BLR = 0; /* use controller 0 for blr */
|
||||
const USHORT IPS_TRANS_REQ_IN_MSG = 1; /* use controller 1 for input msg */
|
||||
const USHORT IPS_TRANS_REQ_OUT_MSG = 2; /* use controller 2 for output msg */
|
||||
|
||||
|
||||
/*
|
||||
This structure is mapped to the start of the allocated
|
||||
communications area between the client and server.
|
||||
*/
|
||||
|
||||
const USHORT MAX_IPS_STRINGS = 5;
|
||||
|
||||
typedef struct {
|
||||
ULONG ips_server_protocol; /* server's protocol level */
|
||||
ULONG ips_client_protocol; /* client's protocol level */
|
||||
ISC_STATUS_ARRAY ips_status; /* status vector */
|
||||
ips_string ips_buffers[MAX_IPS_STRINGS];
|
||||
/* array of buffer controllers */
|
||||
USHORT ips_ops_count; /* operations performed */
|
||||
USHORT ips_sequence; /* transfer sequence number */
|
||||
USHORT ips_operation; /* operation being performed */
|
||||
HANDLE ips_server_proc; /* server's process handle */
|
||||
HANDLE ips_client_proc; /* client's process handle */
|
||||
DWORD ips_server_id; /* server's process id */
|
||||
DWORD ips_client_id; /* client's process id */
|
||||
union {
|
||||
ips_object ips_op_object;
|
||||
ips_compile_req ips_op_compile;
|
||||
ips_blob ips_op_blob;
|
||||
ips_ddl ips_op_ddl;
|
||||
ips_dsql ips_op_dsql;
|
||||
ips_segment ips_op_segment;
|
||||
ips_slice ips_op_slice;
|
||||
ips_que_events ips_op_que_evnt;
|
||||
ips_request ips_op_request;
|
||||
ips_reconnect ips_op_recon_trans;
|
||||
ips_seek_blob ips_op_sk_blob;
|
||||
ips_start_trans ips_op_strt_trans;
|
||||
ips_transact_request ips_op_trans_req;
|
||||
} ips_operations;
|
||||
ULONG ips_data[1]; /* start of data area */
|
||||
} ips_comm_area, *IPS;
|
||||
|
||||
/* size of mapped memory for a given client */
|
||||
|
||||
//#define CLIENT_SERVER_AREA_SIZE 8192
|
||||
|
||||
/* size available for packing stuff in the mapped area */
|
||||
|
||||
//#define CLIENT_SERVER_AVAIL (CLIENT_SERVER_AREA_SIZE - sizeof(ips_comm_area))
|
||||
|
||||
/* Windows names used to identify various named objects */
|
||||
|
||||
static const char* IPI_MAPPED_FILE_NAME = "%sMappedArea%d";
|
||||
static const char* IPI_CLIENT_SEM_NAME = "%sClientSem%d_%d";
|
||||
static const char* IPI_SERVER_SEM_NAME = "%sServerSem%d_%d";
|
||||
static const char* IPI_EVENT_NAME = "%sEvent%d";
|
||||
static const char* IPI_EVENT_CLASS = "%sEventClass";
|
||||
static const char* IPI_EVENT_THREAD = "%sEventThread%d_%d";
|
||||
|
||||
/* local event queue structure */
|
||||
|
||||
typedef struct eventq {
|
||||
struct eventq *evq_next; /* next event */
|
||||
SLONG evq_id; /* event ID */
|
||||
USHORT evq_length; /* event length */
|
||||
UCHAR evq_string[1]; /* event string */
|
||||
} *EVENTQ;
|
||||
|
||||
/* interprocess database thread structure */
|
||||
|
||||
class tidb : public ThreadData
|
||||
{
|
||||
public:
|
||||
struct rdb *tidb_database;
|
||||
ISC_STATUS *tidb_status_vector;
|
||||
UCHAR *tidb_setjmp;
|
||||
};
|
||||
|
||||
typedef tidb* TIDB;
|
||||
|
||||
|
||||
/* bias for connect messages */
|
||||
|
||||
const ULONG IP_BIAS = 3333;
|
||||
|
||||
#endif /* IPSERVER_IPC_H */
|
@ -1,126 +0,0 @@
|
||||
/*
|
||||
* PROGRAM: Interprocess Client
|
||||
* MODULE: ipcevent.cpp
|
||||
* DESCRIPTION: Interprocess interface event window initializer
|
||||
*
|
||||
* The contents of this file are subject to the Interbase Public
|
||||
* License Version 1.0 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy
|
||||
* of the License at http://www.Inprise.com/IPL.html
|
||||
*
|
||||
* Software distributed under the License is distributed on an
|
||||
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
|
||||
* or implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code was created by Inprise Corporation
|
||||
* and its predecessors. Portions created by Inprise Corporation are
|
||||
* Copyright (C) Inprise Corporation.
|
||||
*
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________.
|
||||
*/
|
||||
|
||||
#include "firebird.h"
|
||||
#include <windows.h>
|
||||
|
||||
#include "../ipserver/ipcli_proto.h"
|
||||
#include "../ipserver/ipevt_proto.h"
|
||||
#include "../ipserver/ips.h"
|
||||
|
||||
// instance handle
|
||||
|
||||
extern HINSTANCE hIBDLLInstance;
|
||||
|
||||
// callback for event handling
|
||||
|
||||
LRESULT CALLBACK IBEventWindowFunc(HWND, UINT, WPARAM, LPARAM);
|
||||
|
||||
|
||||
|
||||
int IPC_window_init(
|
||||
char *class_name,
|
||||
char *task_name, HWND * event_window, HANDLE event_sem)
|
||||
{
|
||||
/**************************************
|
||||
*
|
||||
* I P C _ w i n d o w _ i n i t
|
||||
*
|
||||
**************************************
|
||||
*
|
||||
* Functional description
|
||||
* Initialize the window used to process events.
|
||||
*
|
||||
**************************************/
|
||||
HWND hWnd;
|
||||
WNDCLASS wcl;
|
||||
DWORD result;
|
||||
MSG msg;
|
||||
|
||||
|
||||
wcl.hInstance = hIBDLLInstance;
|
||||
wcl.lpszClassName = class_name;
|
||||
wcl.lpfnWndProc = IBEventWindowFunc;
|
||||
wcl.style = 0;
|
||||
|
||||
wcl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
|
||||
wcl.hCursor = LoadCursor(NULL, IDC_ARROW);
|
||||
wcl.lpszMenuName = NULL;
|
||||
|
||||
wcl.cbClsExtra = 0;
|
||||
wcl.cbWndExtra = 0;
|
||||
|
||||
wcl.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
|
||||
|
||||
if (!RegisterClass(&wcl)) {
|
||||
result = GetLastError();
|
||||
return 0;
|
||||
}
|
||||
|
||||
hWnd = CreateWindow(class_name,
|
||||
task_name,
|
||||
WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU |
|
||||
WS_MINIMIZEBOX, CW_USEDEFAULT, CW_USEDEFAULT,
|
||||
CW_USEDEFAULT, CW_USEDEFAULT, HWND_DESKTOP, NULL,
|
||||
hIBDLLInstance, NULL);
|
||||
|
||||
ShowWindow(hWnd, SW_HIDE);
|
||||
UpdateWindow(hWnd);
|
||||
|
||||
// return handle and signal with semaphore
|
||||
|
||||
*event_window = hWnd;
|
||||
ReleaseSemaphore(event_sem, 1L, NULL);
|
||||
while (GetMessage(&msg, NULL, 0, 0)) {
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
return msg.wParam;
|
||||
}
|
||||
|
||||
|
||||
LRESULT CALLBACK IBEventWindowFunc(HWND hWnd,
|
||||
UINT message, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
COPYDATASTRUCT *cpdata;
|
||||
|
||||
|
||||
switch (message) {
|
||||
case WM_CLOSE:
|
||||
DestroyWindow(hWnd);
|
||||
break;
|
||||
|
||||
case WM_DESTROY:
|
||||
PostQuitMessage(0);
|
||||
break;
|
||||
|
||||
case WM_COPYDATA:
|
||||
cpdata = (COPYDATASTRUCT *) lParam;
|
||||
IPC_process_event(cpdata->dwData, cpdata->cbData, cpdata->lpData);
|
||||
break;
|
||||
|
||||
default:
|
||||
return DefWindowProc(hWnd, message, wParam, lParam);
|
||||
}
|
||||
return 0;
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
/*
|
||||
* PROGRAM: JRD Access Method
|
||||
* MODULE: ipcli_proto.h
|
||||
* DESCRIPTION: Prototype header file for ipclient.cpp
|
||||
*
|
||||
* The contents of this file are subject to the Interbase Public
|
||||
* License Version 1.0 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy
|
||||
* of the License at http://www.Inprise.com/IPL.html
|
||||
*
|
||||
* Software distributed under the License is distributed on an
|
||||
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
|
||||
* or implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code was created by Inprise Corporation
|
||||
* and its predecessors. Portions created by Inprise Corporation are
|
||||
* Copyright (C) Inprise Corporation.
|
||||
*
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef IPCLI_PROTO_H
|
||||
#define IPCLI_PROTO_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void IPC_process_event(DWORD, DWORD, LPVOID);
|
||||
void IPC_release_all(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
#endif /* IPCLI_PROTO_H */
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,31 +0,0 @@
|
||||
/*
|
||||
* PROGRAM: JRD Access Method
|
||||
* MODULE: ipevt_proto.h
|
||||
* DESCRIPTION: Prototype header file for ipcevent.cpp
|
||||
*
|
||||
* The contents of this file are subject to the Interbase Public
|
||||
* License Version 1.0 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy
|
||||
* of the License at http://www.Inprise.com/IPL.html
|
||||
*
|
||||
* Software distributed under the License is distributed on an
|
||||
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
|
||||
* or implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code was created by Inprise Corporation
|
||||
* and its predecessors. Portions created by Inprise Corporation are
|
||||
* Copyright (C) Inprise Corporation.
|
||||
*
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________.
|
||||
*/
|
||||
|
||||
|
||||
#ifndef IPEVT_PROTO_H
|
||||
#define IPEVT_PROTO_H
|
||||
|
||||
int IPC_window_init(char*, char*, HWND*, HANDLE);
|
||||
|
||||
#endif /* IPEVT_PROTO_H */
|
||||
|
@ -1,30 +0,0 @@
|
||||
/*
|
||||
* PROGRAM: Interprocess Interface definitions
|
||||
* MODULE: ips.h
|
||||
* DESCRIPTION: Common descriptions
|
||||
*
|
||||
* The contents of this file are subject to the Interbase Public
|
||||
* License Version 1.0 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy
|
||||
* of the License at http://www.Inprise.com/IPL.html
|
||||
*
|
||||
* Software distributed under the License is distributed on an
|
||||
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
|
||||
* or implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code was created by Inprise Corporation
|
||||
* and its predecessors. Portions created by Inprise Corporation are
|
||||
* Copyright (C) Inprise Corporation.
|
||||
*
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________.
|
||||
*/
|
||||
|
||||
#ifndef IPSERVER_IPS_H
|
||||
#define IPSERVER_IPS_H
|
||||
|
||||
#define IPI_CONNECT_MESSAGE WM_USER + 1
|
||||
|
||||
#endif /* IPSERVER_IPS_H */
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,31 +0,0 @@
|
||||
/*
|
||||
* PROGRAM: Interprocess server
|
||||
* MODULE: ips_proto.h
|
||||
* DESCRIPTION: Prototpe header file for ipserver.cpp
|
||||
*
|
||||
* The contents of this file are subject to the Interbase Public
|
||||
* License Version 1.0 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy
|
||||
* of the License at http://www.Inprise.com/IPL.html
|
||||
*
|
||||
* Software distributed under the License is distributed on an
|
||||
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express
|
||||
* or implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code was created by Inprise Corporation
|
||||
* and its predecessors. Portions created by Inprise Corporation are
|
||||
* Copyright (C) Inprise Corporation.
|
||||
*
|
||||
* All Rights Reserved.
|
||||
* Contributor(s): ______________________________________.
|
||||
*/
|
||||
|
||||
#ifndef IPSRV_PROTO_H
|
||||
#define IPSRV_PROTO_H
|
||||
|
||||
USHORT IPS_init(HWND, USHORT, USHORT, USHORT);
|
||||
ULONG IPS_start_thread(ULONG);
|
||||
|
||||
#endif /* IPSRV_PROTO_H */
|
||||
|
Loading…
Reference in New Issue
Block a user