| #ifndef __PIPE__ |
| #define __PIPE__ |
| |
| #define LOCALMSGSZ (8*1024) |
| #define SHMEMMSGSZ (30*1024) |
| #define MAX_PIPES 30 |
| #define MAX_EVENTS 30 |
| #define MAX_LOCKS 256 |
| |
| typedef struct _message_item { |
| char *message; |
| float8 timestamp; |
| struct _message_item *next_message; |
| struct _message_item *prev_message; |
| unsigned char message_id; |
| int *receivers; /* copy of array all registered receivers */ |
| int receivers_number; |
| } message_item; |
| |
| typedef struct _message_echo { |
| struct _message_item *message; |
| unsigned char message_id; |
| struct _message_echo *next_echo; |
| } message_echo; |
| |
| typedef struct { |
| char *event_name; |
| unsigned char max_receivers; |
| int *receivers; |
| int receivers_number; |
| struct _message_item *messages; |
| } alert_event; |
| |
| typedef struct { |
| unsigned int sid; |
| message_echo *echo; |
| } alert_lock; |
| |
| bool ora_lock_shmem(size_t size, int max_pipes, int max_events, int max_locks, bool reset); |
| |
| #define ERRCODE_ORA_PACKAGES_LOCK_REQUEST_ERROR MAKE_SQLSTATE('3','0', '0','0','1') |
| |
| #define LOCK_ERROR() \ |
| ereport(ERROR, \ |
| (errcode(ERRCODE_ORA_PACKAGES_LOCK_REQUEST_ERROR), \ |
| errmsg("lock request error"), \ |
| errdetail("Failed exclusive locking of shared memory."), \ |
| errhint("Restart PostgreSQL server."))); |
| #endif |