-- File: CourierConfig.pack - last edit:
-- AOF                  9-Nov-87 18:45:36
-- DWG		        2-Aug-85 11:06:55
-- Copyright (C) 1984, 1985, 1986, 1987 by Xerox Corporation. All rights reserved. 
--Packager CourierConfig[UnpackedCourier]/m

CourierConfig: SEGMENT =
  BEGIN

  Idle: CODE PACK =
    BEGIN
    CourierImplC[ENTRY VECTOR];
    CourierImplM[ENTRY VECTOR, Watcher, DeleteStream, RemoveConnection];
    CourierImplN[ENTRY VECTOR, DeleteStream];
    NetworkBindingClient[ENTRY VECTOR];
    NetworkBindingServer[ENTRY VECTOR];
    QuickSortImpl[ENTRY VECTOR];
    XStreamImpl[ENTRY VECTOR];
    END;  --Idle
  
  Working: CODE PACK =
    BEGIN
    CourierImplC[
      FlushToEndOfMessage, GetBlock, LocalSystemElement,
      PutBlock, CATCH CODE];
    CourierImplM[
      CreateInternal, CreateNewStream, DeleteConnection,
      StackBlockPush, StackBlockPop];
    CourierImplF[ENTRY VECTOR, SetBulkStream, CATCH CODE];
    CourierImplN[
      Get, Put, SetSST, SendNow, BuildCourierTransport,
      WaitTime, CreateDefaultStream];
    XStreamImpl[OnList, PacketFromBulk, StreamCopy, WaitTime];
    END;  --Working
      
  Serialization: CODE PACK =
    BEGIN
    CourierImplC[
      DeserializeParameters, Fetch, Free, InRange, Store, SerializeParameters,
      GetAttention, StackPop, StackPush, Unstack];
    END;
  
  User: CODE PACK =
    BEGIN
    CourierImplU;
    CourierImplM[
      AssignTransportType, Create, Delete, RegisterTransport,
      ReleaseDataStream, RequestDataStream, SetIdleWatcher];
    END;

  BulkDataStreams: CODE PACK =
    BEGIN
    CourierImplF[
      Get, Put, RedirectStream, RedirectedGet, SendAttn,
      SendNow, SetSST, WaitAttn, GetSST, GetTimeout, SetTimeout];
    CourierImplN[SendAttn, WaitAttn];
    END;  --BulkDataStreams
  
  Server: CODE PACK =
    BEGIN
    CourierImplS;
    CourierImplM[RegisterListener, SearchForExport, Start, Stop];
    CourierImplN[DefaultListener];
    END;

  XStreamImmediate: CODE PACK =
    BEGIN
    XStreamImpl[
      AttentionProc, Create, DeleteNull, Copy, DeleteEnd, XStreamGet,
      XStreamPut, DescribeSink, Destroy, DescribeSource, Make,
      ServerCheckout, UserCheckout, TestForStreamDeleted, CATCH CODE];
    END;

  XStreamThirdParty: CODE PACK =
    BEGIN
    XStreamImpl[
      AbortTransfer, ActiveRendezvous, DescribeTransferArguments,
      BulkDataDispatcher, ServerRendezvous, DescribeCancelArguments,
      CancelRendezvous, PassiveRendezvous, CancelTransfer, StartProtocol,
      StopProtocol];
    END;

  NetworkBindingService: CODE PACK =
    BEGIN
    NetworkBindingServer[
      ClientProcess, ExtractRequestPredicate, RegisterPredicate, SendResponse,
      SendNoBind, InRange, InProgress, ListenerProc, OutProgress, CATCH CODE];
    END;

  NetworkBindingClient: CODE PACK =
    BEGIN
    NetworkBindingClient EXCEPT [ENTRY VECTOR, MAIN];
    QuickSortImpl EXCEPT [MAIN, ENTRY VECTOR];
    END;

  NSDataStreamTransfer: CODE PACK =
    BEGIN
    NSDataStreamImpl[
      ENTRY VECTOR, GetProcedure, PutProcedure, AnnounceStream, WaitForDeletion,
      ActivateDS, Find, Free, New, FillInStream, OperateOnSink,
      OperateOnSource, NewID, InternalCreate, DescribeTicket];
    END;

  NSDataStreamControl: CODE PACK =
    BEGIN
    NSDataStreamImpl EXCEPT
      Idle, Working, NSDataStreamTransfer, NSDataStreamErrorAndMore;
    END;

  StreamToStream: CODE PACK = {StreamCoupleImpl};

  NSDataStreamErrorAndMore: CODE PACK =
    BEGIN
    NSDataStreamImpl[
      TerminateDataStream, CopyStreamToStream,
      AssertLocal, CancelTicket, CancelStream, OpenSink, CreateFilter,
      OpenSource, ErrorAborted, AnnounceAttention, ProcessAbort,
      CheckForOutOfBandAttention, HandleProblem, ReverseDirection,
      GetStreamPair, SetStreamTimeout, CATCH CODE, MAIN];
    END;

  ExpeditedCommon: CODE PACK =
    BEGIN
    ExpeditedCourierImpl[
      ENTRY VECTOR, DescribeHeader, DeserializeFromBlock, Call, Dispatcher,
      SerializeHeader, PrepareCallBuffer, FindServiceDispatcher, SendIt,
      CallToAddresses, CATCH CODE];
    -- gillies
    PacketTimerImpl;
    END;

  ExpandingRing: CODE PACK =
    BEGIN
    ExpeditedCourierImpl[
      SendToRing, CommonCallBroadcaster, DirectedBroadcastCall,
      CallToInternetRing];
    END;

  OtherStuff: CODE PACK =
    BEGIN
    ExpeditedCourierImpl[
      ExportExpeditedPrograms, MakeAnExchanger, UnexportExpeditedPrograms,
      FreeAnExchanger, GetDefaultSocketNumber, MAIN];
    CourierImplC[MAIN];
    CourierImplF[MAIN];
    CourierImplM[
      MAIN, CATCH CODE, EnumerateExports, ExportRemoteProgram, FreeEnumeration,
      UnexportRemoteProgram, AddressesFromCourier, CourierFromAddresses,
      NewStreamFailed];
    CourierImplN[MAIN, CATCH CODE];
    NetworkBindingServer[MAIN, DeregisterPredicate, StartProtocol, StopProtocol];
    XStreamImpl[MAIN, SendNow];
    NetworkBindingClient[MAIN];
    QuickSortImpl[MAIN];
    SubCourierImpl;
    END;

  END;

  CourierFrames: FRAME PACK = 
    {CourierImplC; CourierImplM; CourierImplN; CourierImplU; CourierImplS;
     CourierImplF; SubCourierImpl; ExpeditedCourierImpl; PacketTimerImpl;
     NSDataStreamImpl; StreamCoupleImpl; XStreamImpl;
     NetworkBindingServer; NetworkBindingClient; QuickSortImpl}.