NetSprocket.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:22k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /*
  2.      File:       NetSprocket.h
  3.  
  4.      Contains:   Games Sprockets: NetSprocket interfaces
  5.  
  6.      Version:    Technology: NetSprocket 1.7
  7.                  Release:    QuickTime 6.0.2
  8.  
  9.      Copyright:  (c) 1996-2001 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:      For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __NETSPROCKET__
  18. #define __NETSPROCKET__
  19. #ifndef __CONDITIONALMACROS__
  20. #include "ConditionalMacros.h"
  21. #endif
  22. #ifndef __MACTYPES__
  23. #include "MacTypes.h"
  24. #endif
  25. #ifndef __EVENTS__
  26. #include "Events.h"
  27. #endif
  28. #ifndef __OPENTRANSPORT__
  29. #include "OpenTransport.h"
  30. #endif
  31. #ifndef __OPENTRANSPORTPROVIDERS__
  32. #include "OpenTransportProviders.h"
  33. #endif
  34. #ifndef __MACERRORS__
  35. #include "MacErrors.h"
  36. #endif
  37. #if PRAGMA_ONCE
  38. #pragma once
  39. #endif
  40. #ifdef __cplusplus
  41. extern "C" {
  42. #endif
  43. #if PRAGMA_IMPORT
  44. #pragma import on
  45. #endif
  46. #if PRAGMA_STRUCT_ALIGN
  47.     #pragma options align=power
  48. #elif PRAGMA_STRUCT_PACKPUSH
  49.     #pragma pack(push, 2)
  50. #elif PRAGMA_STRUCT_PACK
  51.     #pragma pack(2)
  52. #endif
  53. #if TARGET_OS_MAC
  54. enum {
  55.     kNSpMaxPlayerNameLen        = 31,
  56.     kNSpMaxGroupNameLen         = 31,
  57.     kNSpMaxPasswordLen          = 31,
  58.     kNSpMaxGameNameLen          = 31,
  59.     kNSpMaxDefinitionStringLen  = 255
  60. };
  61. /* NetSprocket basic types */
  62. typedef struct OpaqueNSpGameReference*  NSpGameReference;
  63. typedef struct OpaqueNSpProtocolReference*  NSpProtocolReference;
  64. typedef struct OpaqueNSpProtocolListReference*  NSpProtocolListReference;
  65. typedef struct OpaqueNSpAddressReference*  NSpAddressReference;
  66. typedef SInt32                          NSpEventCode;
  67. typedef SInt32                          NSpGameID;
  68. typedef SInt32                          NSpPlayerID;
  69. typedef NSpPlayerID                     NSpGroupID;
  70. typedef UInt32                          NSpPlayerType;
  71. typedef SInt32                          NSpFlags;
  72. typedef Str31                           NSpPlayerName;
  73. /* Individual player info */
  74.    struct NSpPlayerInfo {
  75.      NSpPlayerID                     id;
  76.         NSpPlayerType                   type;
  77.       Str31                           name;
  78.       UInt32                          groupCount;
  79.         NSpGroupID                      groups[1];
  80.  };
  81.  typedef struct NSpPlayerInfo NSpPlayerInfo;
  82.     
  83. typedef NSpPlayerInfo *                 NSpPlayerInfoPtr;
  84. /* list of all players */
  85. struct NSpPlayerEnumeration {
  86.     UInt32                          count;
  87.     NSpPlayerInfoPtr                playerInfo[1];
  88. };
  89. typedef struct NSpPlayerEnumeration     NSpPlayerEnumeration;
  90. typedef NSpPlayerEnumeration *          NSpPlayerEnumerationPtr;
  91. /* Individual group info */
  92. struct NSpGroupInfo {
  93.     NSpGroupID                      id;
  94.     UInt32                          playerCount;
  95.     NSpPlayerID                     players[1];
  96. };
  97. typedef struct NSpGroupInfo             NSpGroupInfo;
  98. typedef NSpGroupInfo *                  NSpGroupInfoPtr;
  99. /* List of all groups */
  100. struct NSpGroupEnumeration {
  101.     UInt32                          count;
  102.     NSpGroupInfoPtr                 groups[1];
  103. };
  104. typedef struct NSpGroupEnumeration      NSpGroupEnumeration;
  105. typedef NSpGroupEnumeration *           NSpGroupEnumerationPtr;
  106. /* Topology types */
  107. typedef UInt32                          NSpTopology;
  108. enum {
  109.     kNSpClientServer            = 0x00000001
  110. };
  111. /* Game information */
  112. struct NSpGameInfo {
  113.     UInt32                          maxPlayers;
  114.     UInt32                          currentPlayers;
  115.     UInt32                          currentGroups;
  116.     NSpTopology                     topology;
  117.     UInt32                          reserved;
  118.     Str31                           name;
  119.     Str31                           password;
  120. };
  121. typedef struct NSpGameInfo              NSpGameInfo;
  122. /* Structure used for sending and receiving network messages */
  123. struct NSpMessageHeader {
  124.     UInt32                          version;                    /* Used by NetSprocket.  Don't touch this */
  125.     SInt32                          what;                       /* The kind of message (e.g. player joined) */
  126.     NSpPlayerID                     from;                       /* ID of the sender */
  127.     NSpPlayerID                     to;                         /* (player or group) id of the intended recipient */
  128.     UInt32                          id;                         /* Unique ID for this message & (from) player */
  129.     UInt32                          when;                       /* Timestamp for the message */
  130.     UInt32                          messageLen;                 /* Bytes of data in the entire message (including the header) */
  131. };
  132. typedef struct NSpMessageHeader NSpMessageHeader;
  133. /* NetSprocket-defined message structures */
  134. struct NSpErrorMessage {
  135.     NSpMessageHeader                header;
  136.     OSStatus                        error;
  137. };
  138. typedef struct NSpErrorMessage          NSpErrorMessage;
  139. struct NSpJoinRequestMessage {
  140.     NSpMessageHeader                header;
  141.     Str31                           name;
  142.     Str31                           password;
  143.     UInt32                          theType;
  144.     UInt32                          customDataLen;
  145.     UInt8                           customData[1];
  146. };
  147. typedef struct NSpJoinRequestMessage    NSpJoinRequestMessage;
  148. struct NSpJoinApprovedMessage {
  149.     NSpMessageHeader                header;
  150. };
  151. typedef struct NSpJoinApprovedMessage   NSpJoinApprovedMessage;
  152. struct NSpJoinDeniedMessage {
  153.     NSpMessageHeader                header;
  154.     Str255                          reason;
  155. };
  156. typedef struct NSpJoinDeniedMessage     NSpJoinDeniedMessage;
  157. struct NSpPlayerJoinedMessage {
  158.     NSpMessageHeader                header;
  159.     UInt32                          playerCount;
  160.     NSpPlayerInfo                   playerInfo;
  161. };
  162. typedef struct NSpPlayerJoinedMessage   NSpPlayerJoinedMessage;
  163. struct NSpPlayerLeftMessage {
  164.     NSpMessageHeader                header;
  165.     UInt32                          playerCount;
  166.     NSpPlayerID                     playerID;
  167.     NSpPlayerName                   playerName;
  168. };
  169. typedef struct NSpPlayerLeftMessage     NSpPlayerLeftMessage;
  170. struct NSpHostChangedMessage {
  171.     NSpMessageHeader                header;
  172.     NSpPlayerID                     newHost;
  173. };
  174. typedef struct NSpHostChangedMessage    NSpHostChangedMessage;
  175. struct NSpGameTerminatedMessage {
  176.     NSpMessageHeader                header;
  177. };
  178. typedef struct NSpGameTerminatedMessage NSpGameTerminatedMessage;
  179. struct NSpCreateGroupMessage {
  180.     NSpMessageHeader                header;
  181.     NSpGroupID                      groupID;
  182.     NSpPlayerID                     requestingPlayer;
  183. };
  184. typedef struct NSpCreateGroupMessage    NSpCreateGroupMessage;
  185. struct NSpDeleteGroupMessage {
  186.     NSpMessageHeader                header;
  187.     NSpGroupID                      groupID;
  188.     NSpPlayerID                     requestingPlayer;
  189. };
  190. typedef struct NSpDeleteGroupMessage    NSpDeleteGroupMessage;
  191. struct NSpAddPlayerToGroupMessage {
  192.     NSpMessageHeader                header;
  193.     NSpGroupID                      group;
  194.     NSpPlayerID                     player;
  195. };
  196. typedef struct NSpAddPlayerToGroupMessage NSpAddPlayerToGroupMessage;
  197. struct NSpRemovePlayerFromGroupMessage {
  198.     NSpMessageHeader                header;
  199.     NSpGroupID                      group;
  200.     NSpPlayerID                     player;
  201. };
  202. typedef struct NSpRemovePlayerFromGroupMessage NSpRemovePlayerFromGroupMessage;
  203. struct NSpPlayerTypeChangedMessage {
  204.     NSpMessageHeader                header;
  205.     NSpPlayerID                     player;
  206.     NSpPlayerType                   newType;
  207. };
  208. typedef struct NSpPlayerTypeChangedMessage NSpPlayerTypeChangedMessage;
  209. /* Different kinds of messages.  These can NOT be bitwise ORed together */
  210. enum {
  211.     kNSpSendFlag_Junk           = 0x00100000,                   /* will be sent (try once) when there is nothing else pending */
  212.     kNSpSendFlag_Normal         = 0x00200000,                   /* will be sent immediately (try once) */
  213.     kNSpSendFlag_Registered     = 0x00400000                    /* will be sent immediately (guaranteed, in order) */
  214. };
  215. /* Options for message delivery.  These can be bitwise ORed together with each other,
  216.         as well as with ONE of the above */
  217. enum {
  218.     kNSpSendFlag_FailIfPipeFull = 0x00000001,
  219.     kNSpSendFlag_SelfSend       = 0x00000002,
  220.     kNSpSendFlag_Blocking       = 0x00000004
  221. };
  222. /* Options for Hosting Joining, and Deleting games */
  223. enum {
  224.     kNSpGameFlag_DontAdvertise  = 0x00000001,
  225.     kNSpGameFlag_ForceTerminateGame = 0x00000002
  226. };
  227. /* Message "what" types */
  228. /* Apple reserves all negative "what" values (anything with high bit set) */
  229. enum {
  230.     kNSpSystemMessagePrefix     = (long)0x80000000,
  231.     kNSpError                   = kNSpSystemMessagePrefix | 0x7FFFFFFF,
  232.     kNSpJoinRequest             = kNSpSystemMessagePrefix | 0x00000001,
  233.     kNSpJoinApproved            = kNSpSystemMessagePrefix | 0x00000002,
  234.     kNSpJoinDenied              = kNSpSystemMessagePrefix | 0x00000003,
  235.     kNSpPlayerJoined            = kNSpSystemMessagePrefix | 0x00000004,
  236.     kNSpPlayerLeft              = kNSpSystemMessagePrefix | 0x00000005,
  237.     kNSpHostChanged             = kNSpSystemMessagePrefix | 0x00000006,
  238.     kNSpGameTerminated          = kNSpSystemMessagePrefix | 0x00000007,
  239.     kNSpGroupCreated            = kNSpSystemMessagePrefix | 0x00000008,
  240.     kNSpGroupDeleted            = kNSpSystemMessagePrefix | 0x00000009,
  241.     kNSpPlayerAddedToGroup      = kNSpSystemMessagePrefix | 0x0000000A,
  242.     kNSpPlayerRemovedFromGroup  = kNSpSystemMessagePrefix | 0x0000000B,
  243.     kNSpPlayerTypeChanged       = kNSpSystemMessagePrefix | 0x0000000C
  244. };
  245. /* Special TPlayerIDs  for sending messages */
  246. enum {
  247.     kNSpAllPlayers              = 0x00000000,
  248.     kNSpHostOnly                = (long)0xFFFFFFFF
  249. };
  250. /************************  Initialization  ************************/
  251. #if CALL_NOT_IN_CARBON
  252. EXTERN_API_C( OSStatus )
  253. NSpInitialize                   (UInt32                 inStandardMessageSize,
  254.                                  UInt32                 inBufferSize,
  255.                                  UInt32                 inQElements,
  256.                                  NSpGameID              inGameID,
  257.                                  UInt32                 inTimeout);
  258. /**************************  Protocols  **************************/
  259. /* Programmatic protocol routines */
  260. EXTERN_API_C( OSStatus )
  261. NSpProtocol_New                 (const char *           inDefinitionString,
  262.                                  NSpProtocolReference * outReference);
  263. EXTERN_API_C( void )
  264. NSpProtocol_Dispose             (NSpProtocolReference   inProtocolRef);
  265. EXTERN_API_C( OSStatus )
  266. NSpProtocol_ExtractDefinitionString (NSpProtocolReference  inProtocolRef,
  267.                                  char *                 outDefinitionString);
  268. /* Protocol list routines */
  269. EXTERN_API_C( OSStatus )
  270. NSpProtocolList_New             (NSpProtocolReference   inProtocolRef,
  271.                                  NSpProtocolListReference * outList);
  272. EXTERN_API_C( void )
  273. NSpProtocolList_Dispose         (NSpProtocolListReference  inProtocolList);
  274. EXTERN_API_C( OSStatus )
  275. NSpProtocolList_Append          (NSpProtocolListReference  inProtocolList,
  276.                                  NSpProtocolReference   inProtocolRef);
  277. EXTERN_API_C( OSStatus )
  278. NSpProtocolList_Remove          (NSpProtocolListReference  inProtocolList,
  279.                                  NSpProtocolReference   inProtocolRef);
  280. EXTERN_API_C( OSStatus )
  281. NSpProtocolList_RemoveIndexed   (NSpProtocolListReference  inProtocolList,
  282.                                  UInt32                 inIndex);
  283. EXTERN_API_C( UInt32 )
  284. NSpProtocolList_GetCount        (NSpProtocolListReference  inProtocolList);
  285. EXTERN_API_C( NSpProtocolReference )
  286. NSpProtocolList_GetIndexedRef   (NSpProtocolListReference  inProtocolList,
  287.                                  UInt32                 inIndex);
  288. /* Helpers */
  289. EXTERN_API_C( NSpProtocolReference )
  290. NSpProtocol_CreateAppleTalk     (ConstStr31Param        inNBPName,
  291.                                  ConstStr31Param        inNBPType,
  292.                                  UInt32                 inMaxRTT,
  293.                                  UInt32                 inMinThruput);
  294. EXTERN_API_C( NSpProtocolReference )
  295. NSpProtocol_CreateIP            (InetPort               inPort,
  296.                                  UInt32                 inMaxRTT,
  297.                                  UInt32                 inMinThruput);
  298. /***********************  Human Interface  ************************/
  299. #endif  /* CALL_NOT_IN_CARBON */
  300. typedef CALLBACK_API( Boolean , NSpEventProcPtr )(EventRecord *inEvent);
  301. #if CALL_NOT_IN_CARBON
  302. EXTERN_API_C( NSpAddressReference )
  303. NSpDoModalJoinDialog            (ConstStr31Param        inGameType,
  304.                                  ConstStr255Param       inEntityListLabel,
  305.                                  Str31                  ioName,
  306.                                  Str31                  ioPassword,
  307.                                  NSpEventProcPtr        inEventProcPtr);
  308. EXTERN_API_C( Boolean )
  309. NSpDoModalHostDialog            (NSpProtocolListReference  ioProtocolList,
  310.                                  Str31                  ioGameName,
  311.                                  Str31                  ioPlayerName,
  312.                                  Str31                  ioPassword,
  313.                                  NSpEventProcPtr        inEventProcPtr);
  314. /*********************  Hosting and Joining  **********************/
  315. EXTERN_API_C( OSStatus )
  316. NSpGame_Host                    (NSpGameReference *     outGame,
  317.                                  NSpProtocolListReference  inProtocolList,
  318.                                  UInt32                 inMaxPlayers,
  319.                                  ConstStr31Param        inGameName,
  320.                                  ConstStr31Param        inPassword,
  321.                                  ConstStr31Param        inPlayerName,
  322.                                  NSpPlayerType          inPlayerType,
  323.                                  NSpTopology            inTopology,
  324.                                  NSpFlags               inFlags);
  325. EXTERN_API_C( OSStatus )
  326. NSpGame_Join                    (NSpGameReference *     outGame,
  327.                                  NSpAddressReference    inAddress,
  328.                                  ConstStr31Param        inName,
  329.                                  ConstStr31Param        inPassword,
  330.                                  NSpPlayerType          inType,
  331.                                  void *                 inCustomData,
  332.                                  UInt32                 inCustomDataLen,
  333.                                  NSpFlags               inFlags);
  334. EXTERN_API_C( OSStatus )
  335. NSpGame_EnableAdvertising       (NSpGameReference       inGame,
  336.                                  NSpProtocolReference   inProtocol,
  337.                                  Boolean                inEnable);
  338. EXTERN_API_C( OSStatus )
  339. NSpGame_Dispose                 (NSpGameReference       inGame,
  340.                                  NSpFlags               inFlags);
  341. EXTERN_API_C( OSStatus )
  342. NSpGame_GetInfo                 (NSpGameReference       inGame,
  343.                                  NSpGameInfo *          ioInfo);
  344. /**************************  Messaging  **************************/
  345. EXTERN_API_C( OSStatus )
  346. NSpMessage_Send                 (NSpGameReference       inGame,
  347.                                  NSpMessageHeader *     inMessage,
  348.                                  NSpFlags               inFlags);
  349. EXTERN_API_C( NSpMessageHeader *)
  350. NSpMessage_Get                  (NSpGameReference       inGame);
  351. EXTERN_API_C( void )
  352. NSpMessage_Release              (NSpGameReference       inGame,
  353.                                  NSpMessageHeader *     inMessage);
  354. /* Helpers */
  355. EXTERN_API_C( OSStatus )
  356. NSpMessage_SendTo               (NSpGameReference       inGame,
  357.                                  NSpPlayerID            inTo,
  358.                                  SInt32                 inWhat,
  359.                                  void *                 inData,
  360.                                  UInt32                 inDataLen,
  361.                                  NSpFlags               inFlags);
  362. /*********************  Player Information  **********************/
  363. EXTERN_API_C( OSStatus )
  364. NSpPlayer_ChangeType            (NSpGameReference       inGame,
  365.                                  NSpPlayerID            inPlayerID,
  366.                                  NSpPlayerType          inNewType);
  367. EXTERN_API_C( OSStatus )
  368. NSpPlayer_Remove                (NSpGameReference       inGame,
  369.                                  NSpPlayerID            inPlayerID);
  370. EXTERN_API_C( OSStatus )
  371. NSpPlayer_GetAddress            (NSpGameReference       inGame,
  372.                                  NSpPlayerID            inPlayerID,
  373.                                  OTAddress **           outAddress);
  374. EXTERN_API_C( NSpPlayerID )
  375. NSpPlayer_GetMyID               (NSpGameReference       inGame);
  376. EXTERN_API_C( OSStatus )
  377. NSpPlayer_GetInfo               (NSpGameReference       inGame,
  378.                                  NSpPlayerID            inPlayerID,
  379.                                  NSpPlayerInfoPtr *     outInfo);
  380. EXTERN_API_C( void )
  381. NSpPlayer_ReleaseInfo           (NSpGameReference       inGame,
  382.                                  NSpPlayerInfoPtr       inInfo);
  383. EXTERN_API_C( OSStatus )
  384. NSpPlayer_GetEnumeration        (NSpGameReference       inGame,
  385.                                  NSpPlayerEnumerationPtr * outPlayers);
  386. EXTERN_API_C( void )
  387. NSpPlayer_ReleaseEnumeration    (NSpGameReference       inGame,
  388.                                  NSpPlayerEnumerationPtr  inPlayers);
  389. EXTERN_API_C( UInt32 )
  390. NSpPlayer_GetRoundTripTime      (NSpGameReference       inGame,
  391.                                  NSpPlayerID            inPlayer);
  392. EXTERN_API_C( UInt32 )
  393. NSpPlayer_GetThruput            (NSpGameReference       inGame,
  394.                                  NSpPlayerID            inPlayer);
  395. /*********************  Group Management  **********************/
  396. EXTERN_API_C( OSStatus )
  397. NSpGroup_New                    (NSpGameReference       inGame,
  398.                                  NSpGroupID *           outGroupID);
  399. EXTERN_API_C( OSStatus )
  400. NSpGroup_Dispose                (NSpGameReference       inGame,
  401.                                  NSpGroupID             inGroupID);
  402. EXTERN_API_C( OSStatus )
  403. NSpGroup_AddPlayer              (NSpGameReference       inGame,
  404.                                  NSpGroupID             inGroupID,
  405.                                  NSpPlayerID            inPlayerID);
  406. EXTERN_API_C( OSStatus )
  407. NSpGroup_RemovePlayer           (NSpGameReference       inGame,
  408.                                  NSpGroupID             inGroupID,
  409.                                  NSpPlayerID            inPlayerID);
  410. EXTERN_API_C( OSStatus )
  411. NSpGroup_GetInfo                (NSpGameReference       inGame,
  412.                                  NSpGroupID             inGroupID,
  413.                                  NSpGroupInfoPtr *      outInfo);
  414. EXTERN_API_C( void )
  415. NSpGroup_ReleaseInfo            (NSpGameReference       inGame,
  416.                                  NSpGroupInfoPtr        inInfo);
  417. EXTERN_API_C( OSStatus )
  418. NSpGroup_GetEnumeration         (NSpGameReference       inGame,
  419.                                  NSpGroupEnumerationPtr * outGroups);
  420. EXTERN_API_C( void )
  421. NSpGroup_ReleaseEnumeration     (NSpGameReference       inGame,
  422.                                  NSpGroupEnumerationPtr  inGroups);
  423. /**************************  Utilities  ***************************/
  424. EXTERN_API_C( NumVersion )
  425. NSpGetVersion                   (void);
  426. EXTERN_API_C( void )
  427. NSpSetConnectTimeout            (UInt32                 inSeconds);
  428. EXTERN_API_C( void )
  429. NSpClearMessageHeader           (NSpMessageHeader *     inMessage);
  430. EXTERN_API_C( UInt32 )
  431. NSpGetCurrentTimeStamp          (NSpGameReference       inGame);
  432. EXTERN_API_C( NSpAddressReference )
  433. NSpConvertOTAddrToAddressReference (OTAddress *         inAddress);
  434. EXTERN_API_C( OTAddress *)
  435. NSpConvertAddressReferenceToOTAddr (NSpAddressReference  inAddress);
  436. EXTERN_API_C( void )
  437. NSpReleaseAddressReference      (NSpAddressReference    inAddress);
  438. /************************ Advanced/Async routines ****************/
  439. #endif  /* CALL_NOT_IN_CARBON */
  440. typedef CALLBACK_API( void , NSpCallbackProcPtr )(NSpGameReference inGame, void *inContext, NSpEventCode inCode, OSStatus inStatus, void *inCookie);
  441. #if CALL_NOT_IN_CARBON
  442. EXTERN_API_C( OSStatus )
  443. NSpInstallCallbackHandler       (NSpCallbackProcPtr     inHandler,
  444.                                  void *                 inContext);
  445. #endif  /* CALL_NOT_IN_CARBON */
  446. typedef CALLBACK_API( Boolean , NSpJoinRequestHandlerProcPtr )(NSpGameReference inGame, NSpJoinRequestMessage *inMessage, void *inContext, Str255 outReason);
  447. #if CALL_NOT_IN_CARBON
  448. EXTERN_API_C( OSStatus )
  449. NSpInstallJoinRequestHandler    (NSpJoinRequestHandlerProcPtr  inHandler,
  450.                                  void *                 inContext);
  451. #endif  /* CALL_NOT_IN_CARBON */
  452. typedef CALLBACK_API( Boolean , NSpMessageHandlerProcPtr )(NSpGameReference inGame, NSpMessageHeader *inMessage, void *inContext);
  453. #if CALL_NOT_IN_CARBON
  454. EXTERN_API_C( OSStatus )
  455. NSpInstallAsyncMessageHandler   (NSpMessageHandlerProcPtr  inHandler,
  456.                                  void *                 inContext);
  457. #endif  /* CALL_NOT_IN_CARBON */
  458. #endif  /* TARGET_OS_MAC */
  459. #if PRAGMA_STRUCT_ALIGN
  460.     #pragma options align=reset
  461. #elif PRAGMA_STRUCT_PACKPUSH
  462.     #pragma pack(pop)
  463. #elif PRAGMA_STRUCT_PACK
  464.     #pragma pack()
  465. #endif
  466. #ifdef PRAGMA_IMPORT_OFF
  467. #pragma import off
  468. #elif PRAGMA_IMPORT
  469. #pragma import reset
  470. #endif
  471. #ifdef __cplusplus
  472. }
  473. #endif
  474. #endif /* __NETSPROCKET__ */