00001 using System;
00002 using System.Collections.Generic;
00003 using System.Text;
00004 using System.Runtime.InteropServices;
00005
00010 namespace LibMC
00011 {
00012 public partial class MCAgency
00013 {
00014
00015 private const String mcdll =
00016 #if DEBUG
00017 "libmcd.dll";
00018 #else
00019 "libmc.dll";
00020 #endif
00021
00022 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
00023 internal struct MCAgency_t
00024 {
00025 int client;
00026 int server;
00027 String hostName;
00028 String filename;
00029 int portno;
00030 int portnoc;
00031 IntPtr mc_platform;
00032 int default_agentstatus;
00033 int threads;
00034 int enable_security;
00035
00036 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
00037 int[] stack_size;
00038 int last_error;
00039 };
00040
00041 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
00042 internal struct MCAgencyOptions_t
00043 {
00044 int threads;
00045 int default_agent_status;
00046 int modified;
00047 int enable_security;
00048 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)]
00049
00050 int[] stack_size;
00051 };
00052
00060 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
00061 internal struct ChOptions_t
00062 {
00063 public int shelltype;
00064
00065
00066 public String chhome;
00068
00069
00070 };
00071
00079 public enum MC_ThreadIndex_e
00080 {
00081 MC_THREAD_DF = 0,
00082 MC_THREAD_AMS,
00083 MC_THREAD_ACC,
00084 MC_THREAD_CP,
00085 MC_THREAD_AGENT,
00086 MC_THREAD_ALL
00087 };
00088
00094 public enum MC_SteerCommand_e {
00095 MC_RUN = 0,
00096 MC_SUSPEND,
00097 MC_RESTART,
00098 MC_STOP
00099 };
00100
00111 [Flags]
00112 public enum MC_Signal_e{
00113 MC_NO_SIGNAL = 0x00,
00114 MC_RECV_CONNECTION = 0x01,
00115 MC_RECV_MESSAGE = 0x02,
00116 MC_RECV_AGENT = 0x04,
00117 MC_RECV_RETURN = 0x08,
00118 MC_EXEC_AGENT = 0x10,
00119 MC_ALL_SIGNALS = 0x20
00120 };
00121
00122
00123
00124
00125
00126 [DllImport(mcdll, EntryPoint = "MC_Initialize")]
00127 private static extern IntPtr _MC_Initialize(int port, ref MCAgencyOptions_t options);
00128 [DllImport(mcdll, EntryPoint = "MC_End")]
00129 private static extern int _MC_End(IntPtr agency);
00130 [DllImport(mcdll, EntryPoint = "MC_ChInitializeOptions")]
00131 private static extern int _MC_ChInitializeOptions(IntPtr agency, ChOptions_t options);
00132 [DllImport(mcdll, EntryPoint = "MC_InitializeAgencyOptions")]
00133 private static extern int _MC_InitializeAgencyOptions(ref MCAgencyOptions_t options);
00134 [DllImport(mcdll, EntryPoint = "MC_SetThreadsAllOn")]
00135 private static extern int _MC_SetThreadsAllOn(ref MCAgencyOptions_t options);
00136 [DllImport(mcdll, EntryPoint = "MC_SetThreadsAllOff")]
00137 private static extern int _MC_SetThreadsAllOff(ref MCAgencyOptions_t options);
00138 [DllImport(mcdll, EntryPoint = "MC_SetThreadOn")]
00139 private static extern int _MC_SetThreadOn(ref MCAgencyOptions_t options, MC_ThreadIndex_e index);
00140 [DllImport(mcdll, EntryPoint = "MC_SetThreadOff")]
00141 private static extern int _MC_SetThreadOff(ref MCAgencyOptions_t options, MC_ThreadIndex_e index);
00142 [DllImport(mcdll, EntryPoint = "MC_HaltAgency")]
00143 private static extern int _MC_HaltAgency(IntPtr agency);
00144 [DllImport(mcdll, EntryPoint = "MC_ResumeAgency")]
00145 private static extern int _MC_ResumeAgency(IntPtr agency);
00146 [DllImport(mcdll, EntryPoint = "MC_SetDefaultAgentStatus")]
00147 private static extern int _MC_SetDefaultAgentStatus(IntPtr agency, MCAgent.MC_AgentStatus_e status);
00148 [DllImport(mcdll, EntryPoint = "MC_WaitRetrieveAgent")]
00149 private static extern IntPtr _MC_WaitRetrieveAgent(IntPtr agency);
00150 [DllImport(mcdll, EntryPoint = "MC_WaitAgent")]
00151 private static extern int _MC_WaitAgent(IntPtr agency);
00152 [DllImport(mcdll, EntryPoint = "MC_ MainLoop")]
00153 private static extern int _MC_MainLoop(IntPtr agency);
00154
00155
00156 [DllImport(mcdll, EntryPoint = "MC_SendAgentMigrationMessageFile")]
00157 private static extern int _MC_SendAgentMigrationMessageFile(IntPtr agency, String filename, String hostname, int port);
00158 [DllImport(mcdll, EntryPoint = "MC_SendAgentMigrationMessage")]
00159 private static extern int _MC_SendAgentMigrationMessage(IntPtr agency, String message, String hostname, int port);
00160
00161
00162 [DllImport(mcdll, EntryPoint = "MC_CondBroadcast")]
00163 private static extern int _MC_CondBroadcast(IntPtr agency, int id);
00164 [DllImport(mcdll, EntryPoint = "MC_CondSignal")]
00165 private static extern int _MC_CondSignal(IntPtr agency, int id);
00166 [DllImport(mcdll, EntryPoint = "MC_CondReset")]
00167 private static extern int _MC_CondReset(IntPtr agency, int id);
00168 [DllImport(mcdll, EntryPoint = "MC_CondWait")]
00169 private static extern int _MC_CondWait(IntPtr agency, int id);
00170 [DllImport(mcdll, EntryPoint = "MC_MutexLock")]
00171 private static extern int _MC_MutexLock(IntPtr agency, int id);
00172 [DllImport(mcdll, EntryPoint = "MC_MutexUnlock")]
00173 private static extern int _MC_MutexUnlock(IntPtr agency, int id);
00174 [DllImport(mcdll, EntryPoint = "MC_SemaphorePost")]
00175 private static extern int _MC_SemaphorePost(IntPtr agency, int id);
00176 [DllImport(mcdll, EntryPoint = "MC_SemaphoreWait")]
00177 private static extern int _MC_SemaphoreWait(IntPtr agency, int id);
00178 [DllImport(mcdll, EntryPoint = "MC_ResetSignal")]
00179 private static extern int _MC_ResetSignal(IntPtr agency);
00180 [DllImport(mcdll, EntryPoint = "MC_SyncDelete")]
00181 private static extern int _MC_SyncDelete(IntPtr agency, int id);
00182 [DllImport(mcdll, EntryPoint = "MC_SyncInit")]
00183 private static extern int _MC_SyncInit(IntPtr agency, int id);
00184 [DllImport(mcdll, EntryPoint = "MC_WaitSignal")]
00185 private static extern int _MC_WaitSignal(IntPtr agency, int signals);
00186 [DllImport(mcdll, EntryPoint = "MC_BarrierDelete")]
00187 private static extern int _MC_BarrierDelete(IntPtr agency, int id);
00188 [DllImport(mcdll, EntryPoint = "MC_BarrierInit")]
00189 private static extern int _MC_BarrierInit(IntPtr agency, int id, int num_procs);
00190
00191
00192 [DllImport(mcdll, EntryPoint = "MC_SteerControl")]
00193 private static extern MC_SteerCommand_e _MC_SteerControl();
00194 [DllImport(mcdll, EntryPoint = "MC_Steer")]
00195 private static extern int _MC_Steer(IntPtr agency, IntPtr funcptr, IntPtr arg);
00196
00197
00198
00199 [DllImport(mcdll, EntryPoint = "MC_RegisterService")]
00200 private static extern int _MC_RegisterService(IntPtr agency, IntPtr agent, int agentID, String agentName, String[] serviceNames, int numServices);
00201 [DllImport(mcdll, EntryPoint = "MC_SearchForService")]
00202 private static extern int _MC_SearchForService(IntPtr agency, String searchString, IntPtr agentNames, IntPtr serviceNames, IntPtr agentIDs, IntPtr numResults);
00203
00204
00205
00206 [DllImport(mcdll, EntryPoint = "MC_AddAgent")]
00207 private static extern int _MC_AddAgent(IntPtr agency, IntPtr agent);
00208 [DllImport(mcdll, EntryPoint = "MC_DeleteAgent")]
00209 internal static extern int _MC_DeleteAgent(IntPtr agent);
00210 [DllImport(mcdll, EntryPoint = "MC_FindAgentByName")]
00211 private static extern IntPtr _MC_FindAgentByName(IntPtr agency, String name);
00212 [DllImport(mcdll, EntryPoint = "MC_FindAgentByID")]
00213 private static extern IntPtr _MC_FindAgentByID(IntPtr agency, int ID);
00214 [DllImport(mcdll, EntryPoint = "MC_RetrieveAgent")]
00215 private static extern IntPtr _MC_RetrieveAgent(IntPtr agency);
00216
00217
00218 [DllImport(mcdll, EntryPoint = "MC_GetAgentID")]
00219 internal static extern int _MC_GetAgentID(IntPtr agent);
00220 [DllImport(mcdll, EntryPoint = "MC_GetAgentName")]
00221 internal static extern String _MC_GetAgentName(IntPtr agent);
00222 [DllImport(mcdll, EntryPoint = "MC_GetAgentNumTasks")]
00223 internal static extern int _MC_GetAgentNumTasks(IntPtr agent);
00224 [DllImport(mcdll, EntryPoint = "MC_GetAgentStatus")]
00225 internal static extern MCAgent.MC_AgentStatus_e _MC_GetAgentStatus(IntPtr agent);
00226 [DllImport(mcdll, EntryPoint = "MC_GetAgentType")]
00227 internal static extern MCAgent.MC_AgentType_e _MC_GetAgentType(IntPtr agent);
00228 [DllImport(mcdll, EntryPoint = "MC_GetAgentXMLString")]
00229 internal static extern String _MC_GetAgentXMLString(IntPtr agent);
00230 [DllImport(mcdll, EntryPoint = "MC_PrintAgentCode")]
00231 internal static extern int _MC_PrintAgentCode(IntPtr agent);
00232 [DllImport(mcdll, EntryPoint = "MC_RetrieveAgentCode")]
00233 internal static extern String _MC_RetrieveAgentCode(IntPtr agent);
00234 [DllImport(mcdll, EntryPoint = "MC_SetAgentStatus")]
00235 internal static extern int _MC_SetAgentStatus(IntPtr agent, MCAgent.MC_AgentStatus_e status);
00236 [DllImport(mcdll, EntryPoint = "MC_TerminateAgent")]
00237 internal static extern int _MC_TerminateAgent(IntPtr agent);
00238
00239 [DllImport(mcdll, EntryPoint = "MC_CallAgentFunc")]
00240 internal static extern int _MC_CallAgentFunc(IntPtr agent, String funcName, IntPtr returnVal, IntPtr varg);
00241 [DllImport(mcdll, EntryPoint = "MC_GetAgentExecEngine")]
00242 internal static extern IntPtr _MC_GetAgentExecEngine(IntPtr agent);
00243 [DllImport(mcdll, EntryPoint = "MC_GetAgentReturnData")]
00244 internal static extern int _MC_GetAgentReturnData(IntPtr agent, int task_num, IntPtr data, IntPtr dim, IntPtr extent);
00245
00246
00247
00248
00249
00250 [DllImport(mcdll, EntryPoint = "MC_AclNew")]
00251 internal static extern IntPtr _MC_AclNew();
00252 [DllImport(mcdll, EntryPoint = "MC_AclPost")]
00253 internal static extern int _MC_AclPost(IntPtr agent, IntPtr message);
00254 [DllImport(mcdll, EntryPoint = "MC_AclReply")]
00255 internal static extern IntPtr _MC_AclReply(IntPtr acl_message);
00256 [DllImport(mcdll, EntryPoint = "MC_AclRetrieve")]
00257 internal static extern IntPtr _MC_AclRetrieve(IntPtr agent);
00258 [DllImport(mcdll, EntryPoint = "MC_AclSend")]
00259 internal static extern int _MC_AclSend(IntPtr agency, IntPtr acl_message);
00260 [DllImport(mcdll, EntryPoint = "MC_AclWaitRetrieve")]
00261 internal static extern IntPtr _MC_AclWaitRetrieve(IntPtr agent);
00262
00263
00264 [DllImport(mcdll, EntryPoint = "MC_AclSetPerformative")]
00265 internal static extern int _MC_AclSetPerformative(IntPtr acl, MCAclMessage.MC_FipaPerformative_e performative);
00266 [DllImport(mcdll, EntryPoint = "MC_AclSetSender")]
00267 internal static extern int _MC_AclSetSender(IntPtr acl, String name, String address);
00268 [DllImport(mcdll, EntryPoint = "MC_AclAddReceiver")]
00269 internal static extern int _MC_AclAddReceiver(IntPtr acl, String name, String address);
00270 [DllImport(mcdll, EntryPoint = "MC_AclAddReplyTo")]
00271 internal static extern int _MC_AclAddReplyTo(IntPtr acl, String name, String address);
00272 [DllImport(mcdll, EntryPoint = "MC_AclSetContent")]
00273 internal static extern int _MC_AclSetContent(IntPtr acl, String content);
00274 [DllImport(mcdll, EntryPoint = "MC_AclDestroy")]
00275 internal static extern int _MC_AclDestroy(IntPtr acl);
00276
00277
00278
00279
00280
00281
00282
00283
00284
00285
00286
00287
00288
00289
00290
00291
00292
00293
00294
00295
00296
00297
00298
00299
00300
00301
00302
00303
00304
00305
00306
00307
00308
00309
00310
00311
00312
00313
00314
00315
00316
00317
00318
00319
00320
00321
00322
00323
00324
00325
00326
00327
00328
00329
00330
00331
00332
00333
00334
00335
00336
00337 }
00338 }