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 }