Changeset 8296 for trunk/Ohana/src/opihi/pcontrol/HostOps.c
- Timestamp:
- Aug 11, 2006, 4:51:50 PM (20 years ago)
- File:
-
- 1 edited
-
trunk/Ohana/src/opihi/pcontrol/HostOps.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/opihi/pcontrol/HostOps.c
r8183 r8296 12 12 HostPool_Done = InitStack (); 13 13 HostPool_Down = InitStack (); 14 HostPool_Off = InitStack ();14 HostPool_Off = InitStack (); 15 15 } 16 16 … … 35 35 } 36 36 37 Host *FindHostStack (IDtype HostID) { 38 39 Host *host; 40 41 host = FindHostPtr (HostID, PCONTROL_HOST_IDLE); 42 if (host != NULL) return (host); 43 44 host = FindHostPtr (HostID, PCONTROL_HOST_DOWN); 45 if (host != NULL) return (host); 46 47 host = FindHostPtr (HostID, PCONTROL_HOST_DONE); 48 if (host != NULL) return (host); 49 50 host = FindHostPtr (HostID, PCONTROL_HOST_BUSY); 51 if (host != NULL) return (host); 52 53 host = FindHostPtr (HostID, PCONTROL_HOST_OFF); 54 if (host != NULL) return (host); 55 56 return (NULL); 57 } 58 59 int FindNamedHostStack (char *name) { 60 61 int N; 62 63 N = FindNamedHost (name, PCONTROL_HOST_IDLE); 64 if (N >= 0) return (PCONTROL_HOST_IDLE); 65 66 N = FindNamedHost (name, PCONTROL_HOST_DOWN); 67 if (N >= 0) return (PCONTROL_HOST_DOWN); 68 69 N = FindNamedHost (name, PCONTROL_HOST_DONE); 70 if (N >= 0) return (PCONTROL_HOST_DONE); 71 72 N = FindNamedHost (name, PCONTROL_HOST_BUSY); 73 if (N >= 0) return (PCONTROL_HOST_BUSY); 74 75 N = FindNamedHost (name, PCONTROL_HOST_OFF); 76 if (N >= 0) return (PCONTROL_HOST_OFF); 77 78 return (-1); 79 } 80 37 Stack *GetHostStackByName (char *name) { 38 if (!strcasecmp (name, "idle")) return (HostPool_Idle); 39 if (!strcasecmp (name, "down")) return (HostPool_Down); 40 if (!strcasecmp (name, "done")) return (HostPool_Done); 41 if (!strcasecmp (name, "busy")) return (HostPool_Busy); 42 if (!strcasecmp (name, "off")) return (HostPool_Off); 43 return (NULL); 44 } 45 46 /* add host to position in stack */ 81 47 int PutHost (Host *host, int StackID, int where) { 82 48 … … 88 54 89 55 host[0].stack = StackID; 90 stat = Pu tStack (stack, where, host);91 / * status (0, NULL); */56 stat = PushStack (stack, where, host, host[0].HostID, host[0].hostname); 57 // XXX need to handle the error conditions, or we drop the host & leak memory 92 58 return (stat); 93 59 } 94 60 95 Host *GetHost (int StackID, int where) { 96 97 Host *host; 98 Stack *stack; 99 100 stack = GetHostStack (StackID); 101 if (stack == NULL) return (NULL); 102 103 host = GetStack (stack, where); 104 return (host); 105 } 106 107 int FindHost (IDtype HostID, int StackID) { 108 109 int i; 110 Host *host; 111 Stack *stack; 112 113 stack = GetHostStack (StackID); 114 if (stack == NULL) return (-2); 115 116 for (i = 0; i < stack[0].Nobject; i++) { 117 host = (Host *) stack[0].object[i]; 118 if (host[0].HostID == HostID) { 119 return (i); 120 } 121 } 122 return (-1); 123 } 124 125 Host *FindHostPtr (IDtype HostID, int StackID) { 126 127 int i; 128 Host *host; 129 Stack *stack; 130 131 stack = GetHostStack (StackID); 132 if (stack == NULL) return (NULL); 133 134 for (i = 0; i < stack[0].Nobject; i++) { 135 host = (Host *) stack[0].object[i]; 136 if (host[0].HostID == HostID) { 137 return (host); 138 } 139 } 140 return (NULL); 141 } 142 143 Host *PullHost (IDtype HostID, int StackID) { 144 145 int N; 146 Host *host; 147 148 N = FindHost (HostID, StackID); 149 if (N < 0) return (NULL); 150 151 host = GetHost (StackID, N); 152 if (host == NULL) { 153 gprint (GP_ERR, "programming error! host missing from stack\n"); 154 exit (1); 155 } 156 return (host); 157 } 158 159 int FindNamedHost (char *name, int StackID) { 160 161 int i; 162 Host *host; 163 Stack *stack; 164 165 stack = GetHostStack (StackID); 166 if (stack == NULL) return (-2); 167 168 for (i = 0; i < stack[0].Nobject; i++) { 169 host = (Host *) stack[0].object[i]; 170 if (!strcasecmp (host[0].hostname, name)) { 171 return (i); 172 } 173 } 174 return (-1); 175 } 61 /* find the host by ID in the defined host stacks */ 62 Host *PullHostByID (IDtype HostID, int *StackID) { 63 64 Host *host; 65 66 *StackID = PCONTROL_HOST_IDLE; 67 host = PullHostFromStackByID (*StackID, HostID); 68 if (host != NULL) return (host); 69 70 *StackID = PCONTROL_HOST_DOWN; 71 host = PullHostFromStackByID (*StackID, HostID); 72 if (host != NULL) return (host); 73 74 *StackID = PCONTROL_HOST_DONE; 75 host = PullHostFromStackByID (*StackID, HostID); 76 if (host != NULL) return (host); 77 78 *StackID = PCONTROL_HOST_BUSY; 79 host = PullHostFromStackByID (*StackID, HostID); 80 if (host != NULL) return (host); 81 82 *StackID = PCONTROL_HOST_OFF; 83 host = PullHostFromStackByID (*StackID, HostID); 84 if (host != NULL) return (host); 85 86 *StackID = -1; 87 return (NULL); 88 } 89 90 /* find the host by ID in the defined host stacks */ 91 Host *PullHostByName (char *name, int *StackID) { 92 93 Host *host; 94 95 *StackID = PCONTROL_HOST_IDLE; 96 host = PullHostFromStackByName (*StackID, name); 97 if (host != NULL) return (host); 98 99 *StackID = PCONTROL_HOST_DOWN; 100 host = PullHostFromStackByName (*StackID, name); 101 if (host != NULL) return (host); 102 103 *StackID = PCONTROL_HOST_DONE; 104 host = PullHostFromStackByName (*StackID, name); 105 if (host != NULL) return (host); 106 107 *StackID = PCONTROL_HOST_BUSY; 108 host = PullHostFromStackByName (*StackID, name); 109 if (host != NULL) return (host); 110 111 *StackID = PCONTROL_HOST_OFF; 112 host = PullHostFromStackByName (*StackID, name); 113 if (host != NULL) return (host); 114 115 *StackID = -1; 116 return (NULL); 117 } 118 119 Host *PullHostFromStackByID (int StackID, IDtype ID) { 120 121 Host *host; 122 Stack *stack; 123 124 stack = GetHostStack (StackID); 125 if (stack == NULL) return (NULL); 126 127 host = PullStackByID (stack, ID); 128 return (host); 129 } 130 131 Host *PullHostFromStackByName (int StackID, char *name) { 132 133 Host *host; 134 Stack *stack; 135 136 stack = GetHostStack (StackID); 137 if (stack == NULL) return (NULL); 138 139 host = PullStackByName (stack, name); 140 return (host); 141 } 142 143 /* find the host by ID in the defined host stacks (don't pull off stack) */ 144 /* the Find functions are not thread-safe: DROP */ 145 # if (0) 146 Host *FindHostByID (IDtype HostID, int *StackID) { 147 148 Host *host; 149 150 *StackID = PCONTROL_HOST_IDLE; 151 host = FindHostInStackByID (*StackID, HostID); 152 if (host != NULL) return (host); 153 154 *StackID = PCONTROL_HOST_DOWN; 155 host = FindHostInStackByID (*StackID, HostID); 156 if (host != NULL) return (host); 157 158 *StackID = PCONTROL_HOST_DONE; 159 host = FindHostInStackByID (*StackID, HostID); 160 if (host != NULL) return (host); 161 162 *StackID = PCONTROL_HOST_BUSY; 163 host = FindHostInStackByID (*StackID, HostID); 164 if (host != NULL) return (host); 165 166 *StackID = PCONTROL_HOST_OFF; 167 host = FindHostInStackByID (*StackID, HostID); 168 if (host != NULL) return (host); 169 170 *StackID = -1; 171 return (NULL); 172 } 173 174 /* find the host by Name in the defined host stacks (don't pull off stack) */ 175 Host *FindHostByName (char *name, int *StackID) { 176 177 Host *host; 178 179 *StackID = PCONTROL_HOST_IDLE; 180 host = FindHostInStackByName (*StackID, name); 181 if (host != NULL) return (host); 182 183 *StackID = PCONTROL_HOST_DOWN; 184 host = FindHostInStackByName (*StackID, name); 185 if (host != NULL) return (host); 186 187 *StackID = PCONTROL_HOST_DONE; 188 host = FindHostInStackByName (*StackID, name); 189 if (host != NULL) return (host); 190 191 *StackID = PCONTROL_HOST_BUSY; 192 host = FindHostInStackByName (*StackID, name); 193 if (host != NULL) return (host); 194 195 *StackID = PCONTROL_HOST_OFF; 196 host = FindHostInStackByName (*StackID, name); 197 if (host != NULL) return (host); 198 199 *StackID = -1; 200 return (NULL); 201 } 202 203 Host *FindHostInStackByID (int StackID, IDtype ID) { 204 205 Host *host; 206 Stack *stack; 207 208 stack = GetHostStack (StackID); 209 if (stack == NULL) return (NULL); 210 211 host = FindStackByID (stack, ID); 212 return (host); 213 } 214 215 Host *FindHostInStackByName (int StackID, char *name) { 216 217 Host *host; 218 Stack *stack; 219 220 stack = GetHostStack (StackID); 221 if (stack == NULL) return (NULL); 222 223 host = FindStackByName (stack, name); 224 return (host); 225 } 226 # endif 176 227 177 228 IDtype AddHost (char *hostname) {
Note:
See TracChangeset
for help on using the changeset viewer.
